Recuperare alcune proprieta’ dal metabase di IIS

Stavo lavorando su di un sito web in Asp.net e ho avuto la necessità di recuperare alcune informazioni dal metabase di IIS. Ora, mentre sul nuovo IIS7 esistono delle classi native realizzare per interrogare il file applicationHost.config, nel vecchio IIS6, questa cosa è possibile solamente utilizzando Active Directory e il protocollo IIS.

Con poche righe di codice si può interrogare il metabase di IIS6 (ma anche del 5 che spero bene sia morto e sepolto). Il sistema è ovviamente valido anche per IIS7, ma buona pratica vorrebbe che si utilizzassero le nuove classi, sicuramente più scalabili e thread safe.

Ovviamente il codice non è per nulla ottimizzato e non ci stanno controlli di errore; a me serviva qualcosa al volo per leggere e poi riutilizzare le chiamate giuste in una classe decisamente più corposa di questa.

1: using System.DirectoryServices;
2: 
3: namespace ConsoleApplication1
4: {
5:     class Program
6:     {
7:       static void Main(string[] args)
8:       {
9:          DirectoryEntry entry = new
                  DirectoryEntry("IIS://localhost/W3SVC");
10: 
11:          foreach (DirectoryEntry site in entry.Children)
12:          {
13:              Console.WriteLine(site.Name + "   " + site.Path);
14: 
15:              foreach (DirectoryEntry x in site.Children)
16:              {
17:                  Console.WriteLine("> " + x.Name + "");
18:                  Console.WriteLine("> " + x.Path + "");
19:                  Console.WriteLine("> " + x.Parent + "");
20: 
21:                  Console.WriteLine("");
22:                  Console.WriteLine("");
23:                  Console.WriteLine(" Properties list ");
24:                  Console.WriteLine("");
25:                  foreach (PropertyValueCollection v in x.Properties)
26:                  {
27:                      Console.WriteLine(" --> " + v.PropertyName + " = " + v.Value);
28:                  }
29: 
30:                  Console.WriteLine("");
31:              }
32: 
33:              Console.WriteLine(" ");
34:              Console.WriteLine(" <--------------------> ");
35:              Console.WriteLine(" ");
36:              Console.WriteLine(" ");
37:          }
38:      }
39:     }
40: }

Maggiori informazioni su come utlizzare le nuovi classi native per IIS7, le trovate qui.

Technorati tags: , ,