views:

112

answers:

1

I am trying to Configure my IIS programmatically following the steps on this msdn guide

the only difference i made was switching to winforms instead of console.. and variables instead of function parameters.

however the code throws an exception when i try to set the singleproperty value...

here is my code..

  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();
        }
+2  A: 

The following 'helper' methods (SetServerBinding and RemoveServerBinding) should be of use:

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();
}
Kev