C# - IIS virtuális könyvtár létrehozása programból

forráskód letöltése
Webes alkalmazásaink többségénél egy fizikai elérési útvonalhoz hozzá kell rendelnünk egy alias nevet az IIS-ben, melyen keresztül hivatkozni lehet alkalmazásunkra. Például ha a web oldalaink a c:\Inetpub\wwwroot\animare könyvtárba kerülnek és a weben ezt a http://localhost/animare címen szeretnénk elérni, akkor szükségünk van az IIS-nél egy animare nevű virtuális könyvtár létrehozására. Ezt megtehetjük az IIS konfiguráló segédprogramon keresztül, de akár programból is.
A megoldáshoz a DirectoryEntry osztályt használjuk, mellyel az Active Directory szolgáltatóit érhetjük el. Ilyen például az Internet Information Services (IIS), Lightweight Directory Access Protocol (LDAP), Novell NetWare Directory Service (NDS), és a WinNT névtér. Nekünk most persze az IIS-re lesz szükségünk.
    private void button1_Click(object sender, System.EventArgs e)
    {
      try
      {
Hozzunk is létre kapcsolatot az IIS-el. Ha az ön rendszerében az IIS nem a localhost alatt érhető el, akkor a program futása előtt az alábbi sort javítsa.
        DirectoryEntry iis = new DirectoryEntry("IIS://localhost/W3SVC/1");
Az IIS számtalan objektuma közül nekünk most az IIsWebVirtualDir gyermek objektum főkönyvtárára lesz szükségünk, így ezt keressük elő a Children property Find függvényével.
        DirectoryEntry root = iis.Children.Find("Root", "IIsWebVirtualDir");
Ha ez is megvan, akkor létrehozhatunk egy új virtuális könyvtárat a főkönyvtárból kiindulva. Ehhez szintén a Children property szükséges, melynek Add függvényével elvégezhetjük a szükséges hozzáadást. Első paraméterként a virtuális könyvtár nevét, másodikként a létrehozandó objektum típusát kell megadnunk.
        DirectoryEntry virtualDir = root.Children.Add("animare", "IIsWebVirtualDir");
A létrehozott virtuális könyvtár tulajdonságait szükség szerint beállíthatjuk a Properties kollekción keresztül. Így megadhatjuk a hozzáférési jogosultságokat, valamint azt is, hogy melyik fizikai könyvtár legyen hozzárendelve a virtuális könyvtárunkhoz.
        virtualDir.Properties["AccessRead"].Add(true);
        virtualDir.Properties["Path"].Add("c:\\Inetpub\\wwwroot\\animare");
Ezt követően már csak arról kell rendelkeznünk, hogy a létrehozott új objektum tárolásra is kerüljön.
        virtualDir.Invoke("AppCreate", true);
        virtualDir.CommitChanges();
        root.CommitChanges();
        iis.CommitChanges();    
        ...