C #: пытается установить свойство «ServerBindings» моего сайта программно, продолжает падать - PullRequest
2 голосов
/ 27 октября 2009

Я пытаюсь настроить IIS программно, следуя инструкциям на этом MSDN Guide

единственное отличие, которое я сделал, это переключение на winforms вместо консоли .. и переменные вместо параметров функции.

однако код выдает исключение, когда я пытаюсь установить значение singleproperty ...

вот мой код ..

  string metabasePath = "IIS://localhost/W3SVC/1234", propertyName = "ServerBindings";
  object newValue = " :8080:";

        try
        {

            DirectoryEntry path = new DirectoryEntry(metabasePath);

         //when i try to retrieve the old value,it returns a null 
         PropertyValueCollection propValues = path.Properties[propertyName];

            MessageBox.Show("7"); 
           //the code throws an exception after messagebox,
           //kinda old school debuging 
                path.Properties[propertyName][0] = newValue;

                path.CommitChanges();
                lblerror.Text = "Done";
        }
        catch (Exception ex)
        {
            if ("HRESULT 0x80005006" == ex.Message)
                 lblerror.Text = " Property does not exist at ";
            else
                 lblerror.Text = "Failed in SetSingleProperty "+ ex.Message.ToString();
        }

1 Ответ

4 голосов
/ 28 октября 2009

Должны использоваться следующие вспомогательные методы (SetServerBinding и RemoveServerBinding):

static void Main(string[] args)
{
    using(DirectoryEntry site = new DirectoryEntry("IIS://Localhost/W3SVC/1234"))
    {
        SetServerBinding(":8080:", site);
        RemoveServerBinding(":8080:", site);
        RemoveServerBinding("172.16.4.99:8087:somesite.com", site);
        SetServerBinding("172.16.4.99:8087:somesite.com", site);
    }
}

public static void SetServerBinding(string binding, DirectoryEntry site)
{
    if(site.Properties["ServerBindings"].Contains(binding))
    {
        site.Properties["ServerBindings"].Remove(binding);
        return;
    }

    site.Properties["ServerBindings"].Add(binding);
    site.CommitChanges();
}

public static void RemoveServerBinding(string binding, DirectoryEntry site)
{
    if (site.Properties["ServerBindings"].Contains(binding))
    {
        site.Properties["ServerBindings"].Remove(binding);
    }

    site.CommitChanges();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...