Impostazione dei binding del server di IIS 6.0 a livello di programmazione

Sto cercando di installare un programma di installazione per registrare un sito web. Attualmente, ho creato un pool di applicazioni e un sito Web in Windows Server 2003. Sfortunatamente, ogni volta che provo a modificare la proprietà ServerBindings per impostare l’indirizzo IP, viene generata un’eccezione. Per prima cosa ho provato questo perché la documentazione qui mi ha detto di http://msdn.microsoft.com/en-us/library/ms525712%28VS.90%29.aspx . Attualmente sto usando VB.NET, ma le risposte C # vanno bene anche perché ho bisogno di passare a usare C # in ogni caso.

siteRootDE.Properties.Item("ServerBindings").Item(0) = "
"

Questo genera una ArgumentOutOfRangeException. L’ho controllato, e il binding del server è di dimensione 0. Quando ho provato a creare una nuova voce nella lista come questa:

 siteRootDE.Properties.Item("ServerBindings").Add("
")

Ottengo una COMException quando ci provo.

Ho controllato le chiavi di proprietà registrate e ServerBindings non si trova da nessuna parte. Tuttavia, quando creo il sito Web tramite IIS, genera ServerBindings correttamente e posso vederlo.

Cosa devo fare per far apparire ServerBindings?

EDIT: ho spostato il codice su C # e l’ho provato. Sembra che per qualche motivo, VB.NET si arresti in modo anomalo quando viene fornito il precedente, ma C # non lo fa. Ma quel codice sembra non fare nulla. Semplicemente fallisce. Lo sto provando in questo modo:

 // WebPage is the folder where I created the website DirectoryEntry siteRootDE = new DirectoryRoot("IIS://LocalHost/W3SVC/WebPage"); // www.mydomain.com is one of the IP addresses that shows up // when I used the IIS administrative program siteRootDE.Properties["ServerBindings"].Value = ":80:www.mydomain.com"; siteRootDE.CommitChanges(); 

In C # dovresti essere in grado di farlo:

 webSite.Invoke("Put", "ServerBindings", ":80:www.mydomain.com"); 

o

 webSite.Properties["ServerBindings"].Value = ":80:www.mydomain.com"; 

MODIFICARE:

Ecco il codice di esempio che ho usato.

 public static void CreateNewWebSite(string siteID, string hostname) { DirectoryEntry webService = new DirectoryEntry("IIS://LOCALHOST/W3SVC"); DirectoryEntry website = new DirectoryEntry(); website = webService.Children.Add(siteID, "IIsWebServer"); website.CommitChanges(); website.Invoke("Put", "ServerBindings", ":80:" + hostname); // Or website.Properties["ServerBindings"].Value = ":80:" + hostname; website.Properties["ServerState"].Value = 2; website.Properties["ServerComment"].Value = hostname; website.CommitChanges(); DirectoryEntry rootDir = website.Children.Add("ROOT", "IIsWebVirtualDir"); rootDir.CommitChanges(); rootDir.Properties["AppIsolated"].Value = 2; rootDir.Properties["Path"].Value = @"C:\Inetpub\wwwroot\MyRootDir"; rootDir.Properties["AuthFlags"].Value = 5; rootDir.Properties["AccessFlags"].Value = 513; rootDir.CommitChanges(); website.CommitChanges(); webService.CommitChanges(); } 

Inoltre, ecco un buon articolo per riferimento.