在 C# 中更改 IIS7 绑定的 IP

nei*_*man 2 c# iis-7

我有一个 IIS7 Web 服务器,它运行大量站点,每个站点都有多个绑定。每个站点都使用主机标头和自己的 IP。

使用 C#,我需要将所有绑定上的 IP 更改为 0.0.0.0,以便它们侦听所有 IP。

我当前的代码不会添加新绑定,而是清除旧绑定。我知道我做错了什么吗?

我的代码:

using (ServerManager iisServerManager = new ServerManager())
        {
            foreach (Site site in iisServerManager.Sites)
            {
                List<Microsoft.Web.Administration.Binding> bindings = new List<Microsoft.Web.Administration.Binding>();

                foreach (Microsoft.Web.Administration.Binding binding in site.Bindings)
                {
                    String protocol = binding.Protocol;

                    String hostHeader = binding.Host;

                    String ipAddress = "0.0.0.0";

                    Int32 port = binding.EndPoint.Port;

                    String bind = ipAddress + ":" + port + ":" + hostHeader;

                    binding.BindingInformation = bind;

                    bindings.Add(binding);
                }

                //Clear existing site bindings
                site.Bindings.Clear();

                Int32 bindingCount = site.Bindings.Count();

                foreach (Microsoft.Web.Administration.Binding binding in bindings)
                {
                    site.Bindings.Add(binding);

                    bindingCount = site.Bindings.Count();
                }

                bindingCount = site.Bindings.Count();

                iisServerManager.CommitChanges();
            }
        }
Run Code Online (Sandbox Code Playgroud)

Tyl*_*sen 5

您不需要删除然后重新添加相同的绑定。您只需就地修改它们,然后提交更改即可。另外,当您想要侦听所有 IP 地址时,您需要使用 IP 地址“*”而不是“0.0.0.0”。

这对我有用......

using (ServerManager iisServerManager = new ServerManager())
{
    foreach (Site site in iisServerManager.Sites)
    {
        foreach (Binding binding in site.Bindings)
        {
            string ipAddress = "*";
            int port = binding.EndPoint.Port;
            string hostHeader = binding.Host;

            binding.BindingInformation = string.Format("{0}:{1}:{2}", ipAddress, port, hostHeader);
        }

        iisServerManager.CommitChanges();
    }
}
Run Code Online (Sandbox Code Playgroud)