1

Microsoft.Web.Administration.ServerManager クラスを使用して Web サイトのポートを設定する方法を教えてください。

まず、Web サイトを取得します。

Site site = this._serverManager.Sites[section.WebsiteName];

次に、渡した設定からポートを設定しようとします。

foreach (Binding b in from binding in site.Bindings.Where(b => b != null && b.EndPoint != null)
                                  select binding)
            {
                b.EndPoint.Port = Int32.Parse(section.Port);
                Console.WriteLine(b.EndPoint.Port);
            }    this._serverManager.CommitChanges();

そこに writeline を入れてチェックしましたが、ポートが変更されないのはなぜですか? ここに来る前に確認したので、ウェブサイトが有効であることはすでに知っています。

Binding binding = site.Bindings.CreateElement();
                binding.BindingInformation = String.Format("{2}:{0}:{1}", section.Port,b.Host, b.EndPoint.Address);
                //b.EndPoint.Port = Int32.Parse(section.Port);
                site.Bindings.Add(binding);

上記を試してみたところ、GetAttributeValue に関する COMException が発生しました。

私がしなければならなかった以下の答えのおかげで、ついにそれを手に入れました:

b.BindingInformation = String.Format("{2}:{0}:{1}", section.Port, b.Host, b.EndPoint.Address);
4

1 に答える 1

5

変更をコミットしますか?

これは、サーバー管理アプリにあるコードです (Xml ドキュメントのデータから作成):

ServerManager manager = new ServerManager();
Site site = manager.Sites[siteName];

foreach (XElement bindingNode in bindingsNode.Elements("Binding")) {
    Binding binding = site.Bindings.CreateElement();
    binding.BindingInformation = String.Format("{2}:{0}:{1}", bindingNode.Attribute("Port").Value, bindingNode.Value, bindingNode.Attribute("IP").Value);
    site.Bindings.Add(binding);
}

manager.CommitChanges();
于 2012-07-23T18:25:09.810 に答える