AltınSoft Makale Arşivi

Web Hosting Hizmetleri

Anasayfa | Toplu SMS | Video | Web Hosting | Makale Ara | Anketler | Sitene Ekle | RSS Kaynağı

Arama


Gelişmiş Arama

System.DirectoryServices Sınıfı ile IIS'e komutları

System.DirectoryServices Sınıfı ile IIS'e komutları

Kategori  Kategori : Asp.NET
Yorumlar  Yorum Sayısı : 0
Okunma  Okunma : 160
Tarih  Tarih : 22 Eylül 2009 12:49

Merhaba arkadaşlar bu makalemiz de System.DirectoryServices sınıfını kullanarak IIS' de var olan bir site üzerinde virtual directory oluşturacağız.


System.DirectoryServices Sınıfı ile IIS' e Hükmedelim

Merhaba arkadaşlar bu makalemiz de System.DirectoryServices sınıfını kullanarak IIS'de var olan bir site üzerinde virtual directory oluşturacağız.

Eğer bir servis sağlayıcı isek iis üzerinde çok fazla değişiklik yapmak zorunda kalırız. Bazı durumlar da müşteriler virtual directory oluşturma ihtiyacı duyabiliyor. Bunun için sürekli servis sağlayıcı ile irtibat halinde olmaması ve iş yükü çıkarmaması için kullanıcılara bir arayüz ile kendi virtual directory?lerini kendilerinin oluşturmalarını sağlayabiliriz. İşte bunun için .net framework bize System.DirectoryServices namespace?ni sunuyor.

System.DirectoryServices

System.DirectoryServices(SDS), active directory gibi dizinlere programatik olarak erişmeyi sağlayan .net framework kütüphanesidir. Örneğin iis üzerinde açtığımız bir web sitesi yada virtual directory?yi bu namespace ile programatik olarak kolayca yapabiliriz.

Sınıfımız ile ön bilgiyi aldıktan sonra konu ile ilgili bir örnek yapalım. İlk olarak iis üzerinde bir site açıp daha sonra da bu site üzerinde virtual directory açacağız.

Örnek

Örneğimiz için yeni bir web site oluşturalım. Daha sonra projemize semDirectoryServices.cs isimli yeni bir class ekleyelim. Bu class aşağıdaki gibi olacaktır. Class?a geçmeden önce iis?i yapılandırmamızı sağlayan iis metabase dosyasını inceleyelim.

IIS Metabase Dosyası

Metatabanı, birçok IIS (Internet Information Services) yapılandırma değeri için depodur. Metatabanı düz metinli bir .XML dosyasıdır ve el ile veya programla düzenlenebilir. Ayrıca metatabanı çok verimli şekilde genişletilebilir. IIS dağıtımınız büyüdükçe metatabanınız da büyür; bununla birlikte bir devralma modeli kullanarak, yinelenen değerlerin açıkça bildirimi engellenerek, yapılandırma değerlerinin metatabanından okunması gerektiğinde oluşan iş yükü azaltılır.

semDirectoryServices.cs

using System;

using System.DirectoryServices;

public class semDirectoryServices

{

private string metabase = "IIS://Localhost/W3SVC"; //Kullanacağımız Metabase dosyası

private string siteYolu; // Sitemizin bulunacağı yol

private string siteID; // IIS Üzerinde sitemizin alacağı benzersiz ID

private string siteAdi; // IIS üzerinde sitemize erişeceğimiz isim

public string SiteID

{

get { return siteID; } set { siteID = value; }

}

public string SiteAdi

{

get { return siteAdi; }set { siteAdi = value; }

}

public string SiteYolu

{

get { return siteYolu; } set { siteYolu = value; }

}

public string SiteOlustur()// Bu fonksiyon ile IIS üzerinde bir site açacağız.

{

try

{

DirectoryEntry Servis = new DirectoryEntry(metabase);

string className = Servis.SchemaClassName.ToString();

DirectoryEntries Siteler = Servis.Children;

DirectoryEntry YeniSite = Siteler.Add(siteID, (className.Replace("Service", "Server")));

YeniSite.Properties["ServerComment"][0] = siteAdi;//Açılacak sitenin adı.

YeniSite.CommitChanges();

DirectoryEntry YeniDizin;

YeniDizin = YeniSite.Children.Add("Root", "IIsWebVirtualDir");//Root Dizine Yeni bir site ekliyoruz

YeniDizin.Properties["Path"][0] = siteYolu; // Host edilecek sitenin yolunu belirliyoruz.

YeniDizin.Properties["AccessScript"][0] = true;

YeniDizin.CommitChanges();

DirectoryEntry path = new DirectoryEntry(metabase + "/" + siteID);

PropertyValueCollection propValues = path.Properties["ServerBindings"];

path.Properties["ServerBindings"].Value = ":8080:"; // Sitenin çalışacağı başlantı noktasını belirliyoruz.

path.CommitChanges();

return "Web Sitesi Başarıyla Oluşturuldu !";

}

catch (Exception Ex)

{

return "Bir Hata Meydana Geldi :" + Ex.Message;

}

}

}

Class ile işimiz şimdilik bu kadar. Şimdi kullanıcı ara yüzüne geçebiliriz. Formumuz üzerine;

5 adet label,

3 Textbox ve

1 Button ekleyelim.

Benim hazırladığım görüntü yukarıdaki gibidir. Şimdi buton üzerine tıklayıp sitemizi oluşturacak kodları yazalım.

Button Click Eventi

protected void btnSiteOlustur_Click(object sender, EventArgs e)

{

semDirectoryServices sds = new semDirectoryServices();

sds.SiteID = txtSiteID.Text;

sds.SiteAdi = txtSiteAdi.Text;

sds.SiteYolu = txtDosyaYolu.Text;

lblUyari.Text = sds.SiteOlustur();
}

Şimdi yazdığımız kodu test edelim.

Evet, uyarı olarak başarıyla oluşturuldu dedi ama emin olmak için ilk olarak iis?e gidip bakalım gerçekten de eklendi mi?

IIS'de eklenmiş J Şimdi yazgelistir.com sitesi üzerinde sağ tıklayarak göz at seçeneğine tıklayalım.

Gerçekten de çalışıyormuş J

Şimdi bu siteye birde virtual directory ekleyelim. Bunun için Classs?ızın içine aşağıdaki kodları ekleyelim.

semDirectoryServices.cs - Ek

public string VirtualDirectoryOlustur()

{

try

{

string vdMetabase = metabase + "/" + siteID + "/root";

DirectoryEntry site = new DirectoryEntry(vdMetabase);

string className = site.SchemaClassName.ToString();

if ((className.EndsWith("Server")) || (className.EndsWith("VirtualDir")))

{

DirectoryEntries vdirs = site.Children;

DirectoryEntry YeniVirtualDirectory = vdirs.Add(siteAdi, (className.Replace("Service", "VirtualDir"))); //Sitemize virtual directory ekliyoruz

YeniVirtualDirectory.Properties["Path"][0] = siteYolu; // Virtual directorynin host edileceği dosya yolu

YeniVirtualDirectory.Properties["AccessScript"][0] = true;

YeniVirtualDirectory.Properties["AppFriendlyName"][0] = siteAdi; // Virtual directory adı

YeniVirtualDirectory.Properties["AppIsolated"][0] = "1";

YeniVirtualDirectory.Properties["AppRoot"][0] = "/LM" + vdMetabase.Substring(vdMetabase.IndexOf("/", ("IIS://".Length)));

YeniVirtualDirectory.CommitChanges();

}

return "Virtual directory Başarıyla Oluşturuldu !";

}

catch

{

return "Bir Hata Meydana Geldi !";

}

}

Oluşturduğumuz forma bir adet daha Button ekleyelim. Bu buton altında da daha önce oluşturduğumuz siteye yeni bir virtual directory ekleyeceğiz.

vdOlustur Butonu Click Eventi

protected void vdOlustur_Click(object sender, EventArgs e)

{

semDirectoryServices sds = new semDirectoryServices();

sds.SiteID = txtSiteID.Text;

sds.SiteAdi = txtSiteAdi.Text;

sds.SiteYolu = txtDosyaYolu.Text;

lblUyari.Text = sds.VirtualDirectoryOlustur();

}

Hemen test edelim J

Evet oluşturuldu dedi ama birde iis'den bakalım.

İşte budur :)

Bu makalenin de sonuna geldik. Bir sonraki makale de görüşmek üzere. İyi çalışmalar dilerim

 

Yazdırılabilir Sayfa Yazdırılabilir Sayfa | Word'e Aktar Word'e Aktar | Tavsiye Et Tavsiye Et | Yorum Yaz Yorum Yaz

Asp.NET

En Çok Okunan Makaleler

Seçtiklerimiz

Anket

AltınSoft Makale Arşivini beğendinizmi ?




Tüm Anketler

© 2004-2009 Tüm Hakları Saklıdır
RSS Kaynağı

AltınSoft Bilişim Teknolojileri

Altyapı: MyDesign Haber Sistemi