以编程方式将主机标头添加到IIS 7上的网站

时间:2012-02-11 15:09:13

标签: asp.net c#-4.0 iis-7 directoryservices hostheaders

我想通过Web应用程序(asp.net 4.0 / C#)在一个正在IIS7上工作的网站添加一个主机头。在互联网上有一些例子,但我猜他们中的大多数都不适用于iis7。 (注意:Web应用程序托管在同一台服务器上,所以我想在更改iis配置时不会出现安全问题)

感谢任何帮助,谢谢

2 个答案:

答案 0 :(得分:2)

我找到了这个解决方案,它对我有用。这是一个带有几个参数的小函数,只需要在你的iss配置中找到你的网站的id。之后你必须给服务器的ip地址(iis) ),以及函数的端口号和主机名,它将使用您输入的参数添加主机头。例如

  

AddHostHeader(2,“127.0.0.1:81”,81,“newsHostHeader”);

  static void AddHostHeader(int? websiteID, string ipAddress, int? port, string hostname)
    {
        using (var directoryEntry = new DirectoryEntry("IIS://localhost/w3svc/" + websiteID.ToString()))
        {
            var bindings = directoryEntry.Properties["ServerBindings"];
            var header = string.Format("{0}:{1}:{2}", ipAddress, port, hostname);
            if (bindings.Contains(header))
              throw new InvalidOperationException("Host Header already exists!");
            bindings.Add(header);
            directoryEntry.CommitChanges();
        }
    }
  

(注意:不要忘记使用添加到页面   的System.DirectoryServices;使用Microsoft.Web.Administration; )

答案 1 :(得分:0)

上面的解决方案对我来说与IIS7.5不太一致。 我最终不得不这样做 http://www.iis.net/configreference/system.applicationhost/sites/site/bindings/binding