站点 <site>

概述

<site> 配置元素控制在 IIS 7 及更高版本服务器上运行的特定网站的配置。 例如,默认网站及其设置在 <site> 元素中定义,该元素位于 <sites> 元素的开始标记和结束标记之间。

在 IIS 7 及更高版本上创建新网站时配置 <site> 元素。 <site> 元素包含 name 属性(定义已为网站分配的名称)和 id 属性(定义网站的数值标识符)<site> 元素包含子元素,这些子元素可定义站点上运行的应用程序和虚拟目录以及网站的端口、协议、日志记录和跟踪配置设置。

兼容性

版本 说明
IIS 10.0 <site> 元素在 IIS 10.0 中未进行修改。
IIS 8.5 <site> 元素在 IIS 8.5 中未进行修改。
IIS 8.0 <site> 元素在 IIS 8.0 中未进行修改。
IIS 7.5 <site> 元素在 IIS 7.5 中未进行修改。
IIS 7.0 IIS 7.0 中引入了 <sites> 集合的 <site> 元素。
IIS 6.0 <sites> 集合替换了 IIS 6.0 IIsWebServer 元数据库对象

安装

<site> 元素包含在 IIS 7 及更高版本的默认安装中。

操作方式

在 IIS 7 上配置新网站时,必须为网站分配站点名称和物理路径。 还可以设置许多可选配置设置。 如果计划继续在 IIS 7 服务器上使用默认网站,则必须更改新站点的绑定信息。 可以通过更改端口或输入新网站的主机名来执行此操作。

如何创建新网站

  1. 打开 Internet Information Services (IIS) 管理器:

    • 如果使用的是 Windows Server 2012 或 Windows Server 2012 R2:

      • 在任务栏上,单击“服务器管理器”,单击“工具”,然后单击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows 8 或 Windows 8.1:

      • 按住 Windows 键,按字母 X,然后单击“控制面板”
      • 单击“管理工具”,然后双击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows Server 2008 或 Windows Server 2008 R2:

      • 在任务栏上,单击“开始”,指向“管理工具”,然后单击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows Vista 或 Windows 7:

      • 在任务栏上,单击“开始”,然后单击“控制面板”
      • 双击“管理工具”,然后双击“Internet Information Services (IIS)管理器”
  2. 在“连接”窗格中,展开服务器名称,然后单击“站点”

  3. 在“操作”窗格中,单击“添加网站”

  4. 在“添加网站”对话框中,至少在“站点名称”和“物理路径”文本框中输入信息,并选择是要在“主机名”文本框中输入信息,还是更改“端口”框中的数字
    Screenshot that shows the Add Web Site dialog box. Contoso is entered in the Site name text box.

  5. 在 IIS 管理器上,单击“刷新”按钮以验证站点是否已启动。

如何对 FTP 站点启用或禁用匿名身份验证

  1. 打开 Internet Information Services (IIS) 管理器:

    • 如果使用的是 Windows Server 2012 或 Windows Server 2012 R2:

      • 在任务栏上,单击“服务器管理器”,单击“工具”,然后单击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows 8 或 Windows 8.1:

      • 按住 Windows 键,按字母 X,然后单击“控制面板”
      • 单击“管理工具”,然后双击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows Server 2008 或 Windows Server 2008 R2:

      • 在任务栏上,单击“开始”,指向“管理工具”,然后单击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows Vista 或 Windows 7:

      • 在任务栏上,单击“开始”,然后单击“控制面板”
      • 双击“管理工具”,然后双击“Internet Information Services (IIS)管理器”
  2. 在“连接”窗格中,展开服务器名称,展开“站点”节点,然后单击站点名称

  3. 在站点的“主页”窗格中,双击“FTP 身份验证”功能

  4. 在“FTP 身份验证”页,选择“匿名身份验证”

  5. 在“操作”窗格中,单击“启用”以启用匿名身份验证,或单击“禁用”以禁用匿名身份验证
    Screenshot that shows the F T P Authentication pane. Anonymous Authentication is listed and disabled.

如何使用 FTP 站点向导创建具有匿名读取访问权限的 FTP 站点

  1. 打开 Internet Information Services (IIS) 管理器:

    • 如果使用的是 Windows Server 2012 或 Windows Server 2012 R2:

      • 在任务栏上,单击“服务器管理器”,单击“工具”,然后单击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows 8 或 Windows 8.1:

      • 按住 Windows 键,按字母 X,然后单击“控制面板”
      • 单击“管理工具”,然后双击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows Server 2008 或 Windows Server 2008 R2:

      • 在任务栏上,单击“开始”,指向“管理工具”,然后单击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows Vista 或 Windows 7:

      • 在任务栏上,单击“开始”,然后单击“控制面板”
      • 双击“管理工具”,然后双击“Internet Information Services (IIS)管理器”
  2. 在“连接”窗格中,单击树中的“站点”节点

  3. 右键单击树中的“站点”节点,单击“添加 FTP 站点”,或者单击“操作”窗格中的“添加 FTP 站点”

  4. 显示“添加 FTP 站点”向导时

    • 在“FTP 站点名称”框中输入“我的新 FTP 站点”

    • 对于“物理路径”,可以使用以下一个选项指定内容目录:

      • 单击省略号 (...) 按钮,然后导航到包含 FTP 站点内容的文件夹。
      • 在框中键入内容文件夹的路径。 请注意,如果选择键入路径,则可以在路径中使用环境变量。 例如,可对内容路径使用“%SystemDrive%\inetpub\ftproot”。
    • 完成这些项,然后单击“下一步”
      Screenshot that shows the Site Information page. My New F T P Site is entered in the F T P site name text box.

  5. 在“添加 FTP 站点”向导的第二页:

    • 从“IP 地址”下拉菜单中选择 FTP 站点的 IP 地址,或者选择接受默认选择“所有未分配”

    • 在“端口”框中输入 FTP 站点的 TCP/IP 端口。 默认情况下,FTP 站点和客户端使用端口 21。 (注意:若要指定隐式 FTPS,需要使用端口 990。)

    • 若要使用 FTP 虚拟主机名,请选择“启用虚拟主机名”,然后在“虚拟主机”框中输入虚拟主机名

    • 对于 SSL 选项,请选择以下一个选项:

      • 选择“无 SSL”以禁用 SSL 选项
      • 选择“允许 SSL”以允许 FTP 客户端在连接到 FTP 服务器时选择性地使用 FTP over SSL
      • 选择“要求 SSL”以允许 FTP 客户端在连接到 FTP 服务器时始终使用 FTP over SSL
      • 如果选择“允许 SSL”或“要求 SSL”,请从“SSL 证书”下拉菜单中选择证书
    • 完成这些项,然后单击“下一步”
      Screenshot that shows the Binding and S S L Settings page. Allow S S L is selected.

  6. 在向导的下一页:

    • 为“身份验证”设置选择“匿名”
    • 对于“授权”设置,请从“允许以下对象访问”下拉列表中选择“匿名用户”
    • 为“权限”选项选择“读取”
    • 完成这些项,然后单击“完成”
      Screenshot that shows the Authentication and Authorization Information page. Anonymous and Read are selected.

配置

可以在 ApplicationHost.config 文件中的服务器级别配置 <site> 元素。

特性

属性 说明
id 可选 uint 属性。

指定在创建站点时由 IIS 分配的随机数值标识符。

默认网站编号为 1。 其他网站具有由多个数字组成的随机数。
name 可选的字符串属性。

指定唯一标识网站的易记名称,例如“Contoso HR Forms”。
serverAutoStart 可选布尔属性。

指定在管理服务启动时站点是否应自动启动。

默认值为 true

子元素

元素 说明
application 可选元素。

指定站点中应用程序的配置设置集合。
applicationDefaults 可选元素。

指定父站点中所有应用程序的默认设置。
bindings 可选元素。

指定要访问站点的绑定。
ftpServer 可选元素。

指定站点的 FTP 设置。

注意:这需要安装 FTP 7.0 或 FTP 7.5
limits 可选元素。

配置相关设置以限制带宽量、连接数或站点连接的时间量。
logFile 可选元素。

配置相关设置以处理和存储站点日志文件。
traceFailedRequestsLogging 可选元素。

指定设置以记录站点的失败请求跟踪。
virtualDirectoryDefaults 可选元素。

指定站点中所有虚拟目录的默认设置。

配置示例

以下配置示例显示 ApplicationHost.config 文件中的 <site> 元素。 name 属性将站点名称定义为 Contoso,id 属性将特定于 IIS 的标识符定义为 2<virtualDirectory> 元素 中的 physicalPath 属性定义新站点内容的物理位置<binding> 元素的 protocol 属性定义站点将使用的协议,bindingInformation 属性将 www.contoso.com 定义为新网站使用的主机头

<site name="Contoso" id="2">
   <application path="/">
      <virtualDirectory path="/" physicalPath="C:\inetpub\Contoso" />
   </application>
   <bindings>
      <binding protocol="http" bindingInformation="*:80:www.contoso.com" />
   </bindings> 
</site>

代码示例

以下示例创建了一个名为 Contoso 的新网站,其 ID 为 2,并设置了 HTTP 协议的绑定,端口 80,主机头为“www.contoso.com”。 新网站的物理路径为 C:\Inetpub\www.contoso.com\wwwroot。

AppCmd.exe

appcmd.exe set config -section:system.applicationHost/sites /+"[name='Contoso',id='2',serverAutoStart='True']" /commit:apphost

appcmd.exe set config -section:system.applicationHost/sites /+"[name='Contoso',id='2'].bindings.[protocol='http',bindingInformation='*:80:www.contoso.com']" /commit:apphost

appcmd.exe set config -section:system.applicationHost/sites /+"[name='Contoso',id='2'].[path='/']" /commit:apphost

appcmd.exe set config -section:system.applicationHost/sites /+"[name='Contoso',id='2'].[path='/'].[path='/',physicalPath='C:\Inetpub\www.contoso.com\wwwroot']" /commit:apphost

注意

使用 AppCmd.exe 配置这些设置时,必须确保将 commit 参数设置为 apphost。 这会将配置设置提交到 ApplicationHost.config 文件中的相应位置部分。

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection sitesSection = config.GetSection("system.applicationHost/sites");
         ConfigurationElementCollection sitesCollection = sitesSection.GetCollection();

         ConfigurationElement siteElement = sitesCollection.CreateElement("site");
         siteElement["name"] = @"Contoso";
         siteElement["id"] = 2;
         siteElement["serverAutoStart"] = true;

         ConfigurationElementCollection bindingsCollection = siteElement.GetCollection("bindings");
         ConfigurationElement bindingElement = bindingsCollection.CreateElement("binding");
         bindingElement["protocol"] = @"http";
         bindingElement["bindingInformation"] = @"*:80:www.contoso.com";
         bindingsCollection.Add(bindingElement);

         ConfigurationElementCollection siteCollection = siteElement.GetCollection();
         ConfigurationElement applicationElement = siteCollection.CreateElement("application");
         applicationElement["path"] = @"/";
         ConfigurationElementCollection applicationCollection = applicationElement.GetCollection();
         ConfigurationElement virtualDirectoryElement = applicationCollection.CreateElement("virtualDirectory");
         virtualDirectoryElement["path"] = @"/";
         virtualDirectoryElement["physicalPath"] = @"C:\Inetpub\www.contoso.com\wwwroot";
         applicationCollection.Add(virtualDirectoryElement);
         siteCollection.Add(applicationElement);
         sitesCollection.Add(siteElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim sitesSection As ConfigurationSection = config.GetSection("system.applicationHost/sites")
      Dim sitesCollection As ConfigurationElementCollection = sitesSection.GetCollection

      Dim siteElement As ConfigurationElement = sitesCollection.CreateElement("site")
      siteElement("name") = "Contoso"
      siteElement("id") = 2
      siteElement("serverAutoStart") = True

      Dim bindingsCollection As ConfigurationElementCollection = siteElement.GetCollection("bindings")
      Dim bindingElement As ConfigurationElement = bindingsCollection.CreateElement("binding")
      bindingElement("protocol") = "http"
      bindingElement("bindingInformation") = "*:80:www.contoso.com"
      bindingsCollection.Add(bindingElement)

      Dim siteCollection As ConfigurationElementCollection = siteElement.GetCollection
      Dim applicationElement As ConfigurationElement = siteCollection.CreateElement("application")
      applicationElement("path") = "/"
      Dim applicationCollection As ConfigurationElementCollection = applicationElement.GetCollection
      Dim virtualDirectoryElement As ConfigurationElement = applicationCollection.CreateElement("virtualDirectory")
      virtualDirectoryElement("path") = "/"
      virtualDirectoryElement("physicalPath") = "C:\Inetpub\www.contoso.com\wwwroot"
      applicationCollection.Add(virtualDirectoryElement)
      siteCollection.Add(applicationElement)
      sitesCollection.Add(siteElement)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST");
var sitesCollection = sitesSection.Collection;

var siteElement = sitesCollection.CreateNewElement("site");
siteElement.Properties.Item("name").Value = "Contoso";
siteElement.Properties.Item("id").Value = 2;
siteElement.Properties.Item("serverAutoStart").Value = true;

var bindingsCollection = siteElement.ChildElements.Item("bindings").Collection;
var bindingElement = bindingsCollection.CreateNewElement("binding");
bindingElement.Properties.Item("protocol").Value = "http";
bindingElement.Properties.Item("bindingInformation").Value = "*:80:www.contoso.com";
bindingsCollection.AddElement(bindingElement);

var siteCollection = siteElement.Collection;
var applicationElement = siteCollection.CreateNewElement("application");
applicationElement.Properties.Item("path").Value = "/";
var applicationCollection = applicationElement.Collection;
var virtualDirectoryElement = applicationCollection.CreateNewElement("virtualDirectory");
virtualDirectoryElement.Properties.Item("path").Value = "/";
virtualDirectoryElement.Properties.Item("physicalPath").Value = "C:\\Inetpub\\www.contoso.com\\wwwroot";
applicationCollection.AddElement(virtualDirectoryElement);
siteCollection.AddElement(applicationElement);
sitesCollection.AddElement(siteElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST")
Set sitesCollection = sitesSection.Collection

Set siteElement = sitesCollection.CreateNewElement("site")
siteElement.Properties.Item("name").Value = "Contoso"
siteElement.Properties.Item("id").Value = 2
siteElement.Properties.Item("serverAutoStart").Value = True

Set bindingsCollection = siteElement.ChildElements.Item("bindings").Collection
Set bindingElement = bindingsCollection.CreateNewElement("binding")
bindingElement.Properties.Item("protocol").Value = "http"
bindingElement.Properties.Item("bindingInformation").Value = "*:80:www.contoso.com"
bindingsCollection.AddElement bindingElement

Set siteCollection = siteElement.Collection
Set applicationElement = siteCollection.CreateNewElement("application")
applicationElement.Properties.Item("path").Value = "/"
Set applicationCollection = applicationElement.Collection
Set virtualDirectoryElement = applicationCollection.CreateNewElement("virtualDirectory")
virtualDirectoryElement.Properties.Item("path").Value = "/"
virtualDirectoryElement.Properties.Item("physicalPath").Value = "C:\Inetpub\www.contoso.com\wwwroot"
applicationCollection.AddElement(virtualDirectoryElement)
siteCollection.AddElement applicationElement
sitesCollection.AddElement siteElement

adminManager.CommitChanges()