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();
...