2

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

任何帮助表示赞赏,谢谢

4

2 回答 2

3

我找到了这个解决方案,它对我有用。这是一个带有几个参数的小功能,只是你必须在你的 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;)

于 2012-04-24T12:42:32.560 回答
0

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

于 2013-03-09T16:45:58.903 回答