2

我正在尝试将站点绑定列表添加到 applicationHost.config 文件,而不是通过 IIS 7.5 手动添加每个站点绑定。

<site name="new_site" id="6">
    <application path="/" applicationPool="new_site">
        <virtualDirectory path="/" physicalPath="D:\HTTP\wwwroot\newsite" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:80:example.com" />
        <binding protocol="http" bindingInformation="*:80:www.example.com" />
        <binding protocol="http" bindingInformation="*:80:example2.com" />
        <binding protocol="http" bindingInformation="*:80:www.example2.com" />
    </bindings>
</site>

这样做的原因是我有 2000 个绑定要添加,如果我可以直接编辑配置文件,这将容易得多。

但是,在编辑配置文件时,绑定不起作用或显示在 IIS 中。

这实际上是可能的还是我错过了什么?

4

3 回答 3

0

您应该使用Microsoft.Web.Administration程序集并通过该 API 创建站点。这是创建站点的示例

http://learn.iis.net/page.aspx/226/microsoftwebadministration/

于 2012-04-28T17:47:12.463 回答
0

您可以在 PowerShell 中编写脚本:

[Reflection.Assembly]::Load(
"Microsoft.Web.Administration, Version=7.0.0.0, 
Culture=Neutral, PublicKeyToken=31bf3856ad364e35") > $null

$siteId = 6
$serverManager = New-Object Microsoft.Web.Administration.ServerManager
$site = $serverManager.Sites | where { $_.Id -eq $siteID }

# Read your list of hostnames

$reader = [System.IO.File]::OpenText("c:\\hostnames.txt")
for(;;) 
{
    $domainName = $reader.ReadLine()
    if($domainName -eq $null) { break }
    $binding1 = "*:80:www." + $domainName
    $binding2 = "*:80:" + $domainName
    $site.Bindings.Add($binding1, "http")
    $site.Bindings.Add($binding2, "http")
}
$serverManager.CommitChanges()

该文件c:\\hostnames.txt将包含所有域名的列表,例如:

域名1.com
域名2.com
域名3.com

如果您需要绑定到特定的 IP 地址,请替换*为 IP 地址。

于 2012-05-03T03:20:58.960 回答
0

您是否在 64 位机器上使用 32 位编辑器?如果是这样,Windows 会将您的编辑保存到 C:\Windows\SysWOW64\inetsrv\Config\applicationHost.config。

请参阅https://serverfault.com/questions/315904/cannot-open-iis-7-applicationhost-config-in-64-bit-windows-with-32-bit-text-edit

于 2014-02-08T00:00:09.150 回答