Torniamo a parlare di ADSI.
Tempo fa affrontai un progetto in cui si aveva la necessità di cambiare il nome ad un WebSite all'interno di IIS via codice. In entrata potevo avere 2 valori, Identificativo website e valore stringa da assegnare.
Naturalmente la risposta è stata ADSI.
Il metodo che segue effettua una connessione diretta al ID interessato e ne imposta la proprietà ServerComment.
Al termine dell'operazione viene lanciato il CommitChange per rendere persistenti le modifiche.
Nel caso in cui il cambio di valore fallisca, (questo può accadere spesso e volentieri) il metodo integra un sistema di retry. Attende 2 secondi e riparte con l'esecuzione.
///
/// Imposta nuovo server comment ad un website
///
/// long IDWebSite
/// string il servercomment che verrà aggiunto ad IIS
private void changeIISName(long IDWebsite, string Nome)
{
int Contatore = 0;
int retrytime = 5;
int elapsetime = 2000;
retry:
try
{
DirectoryEntry iisWeb = null;
iisWeb = new DirectoryEntry(@"IIS://" + "localhost" + @"/W3SVC/" + IDWebsite);
iisWeb.Properties["ServerComment"].Value = Nome;
iisWeb.CommitChanges();
iisWeb.Close();
iisWeb.Dispose();
}
catch (System.Exception ex)
{
// Autmento il contatore
if (Contatore < retrytime)
{
Contatore++;
System.Threading.Thread.Sleep(elapsetime);
goto retry;
}
}
}
|
Come al solito bisogna referenziare System.DirectoryServices nel progetto per eseguire il codice.