2

それぞれ複数のバインディングを持つ多数のサイトを実行する 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();
            }
        }
4

1 に答える 1

4

同じバインディングを削除してから再度追加する必要はありません。それらをその場で変更してから、変更をコミットできます。また、すべての IP アドレスでリッスンする場合は、「0.0.0.0」の代わりに「*」の IP アドレスを使用します。

これは私のために働いた...

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();
    }
}
于 2012-10-19T19:23:20.537 に答える