Programmare IIS con ADSI non significa esplicitamente prelevare e cambiare valori di proprietà.
Derivando dalla logica ad albero di Active Directory, la programmazione di IIS eredita il metodo Invoke, il quale ci permette di pilotare via codice un determinato WebSite.

Ad esempio, il codice lancia i comandi

  • Start WebSite - Il Sito Internet viene messo Online
  • Stop WebSite - Il Sito Internet viene messo Offline

             ///

             /// Lancia comandi Internet Information Services per un determinato Dominio specificato

             /// I comandi supportati sono [start-stop].

             /// Utilizza ADSI.

             ///

             /// string

             /// long

             /// string

             private void executeWebSiteCommand(string IpAddress,long ID,string command)

             {

                    DirectoryEntry webSite = new DirectoryEntry("IIS://" + IpAddress + "/W3SVC/" + ID);

                   

                           switch(command.ToLower())

                           {

                                  case "start":

                                        webSite.Invoke("start");

                                        break;

                                  case "stop":

                                        webSite.Invoke("stop");

                                        break;

                                  default:

                                        throw new System.Exception("Comando IIS non valido - Comandi accettati START-STOP");

                           }

             }     

Come si può vedere la logica è sempre la stessa.

  1. Viene effettuata la connessione al Ramo interessato
  2. Viene invocato il metodo Invoke seguito dal comando da eseguire

Il  metodo Invoke permette anche operazioni più complesse sul ramo WebSite.
Come si vede nel codice che segue è possibile, per esempio, cancellare un determinato WebSite semplicemente specificando tre parametri

  1. Command Name - Il comando da effettuare
  2. La classe su cui si sta operando - Nel caso di un WebSite IIsWebWebServer
  3. Il riferimento all'oggetto - Nel caso di IIs IDWebSite

             ///

             /// Utilizza ADSI per cancellare un IDWebSite

             ///

             /// long

             void DeleteADSI(long IDWebSite)

             {

                                  DirectoryEntry root = new DirectoryEntry("IIS://localhost/W3SVC");

                                  try

                                  {

                                        root.Invoke("Delete", "IIsWebServer", IDWebSite);

                                  }

                                        catch (System.Exception ex)

                                        {

                                               Console.WriteLine(ex.Message.ToString());

                                        }

                                       

                                  // assicura le modifiche         

                                  root.CommitChanges();     

             }

Ricordiamoci che IIS non è solo Virtual Web Server ma anche Application Pools (introdotti in IIS6), Virtual Directory,Permissions ed altro ancora. Farà sicuramente piacere sapere che, è possibile programmare sotto tutti i punti di vista le varie features del webServer Microsoft.