Bazı uygulamalarımızda ISS üzerindeki kullanacağımız klasörlerimize uygulama tarafında izinler vermemeiz gerekebilir bunun için aşağıda bahsedeceğim yapıyı kullanarak çözüm üretebilirsiniz. öncelikle aşağıdaki metodu kullanacağımızı belirteyim. ve sonrasında da biraz açıklayalım.
public void YazimIzniVer(string HesapAdi, string klasorYolu)
{
try
{
if (Directory.Exists(klasorYolu))
{
var klasor = new DirectoryInfo(klasorYolu);
var klasorGuvenligi = klasor.GetAccessControl();
var rule = new FileSystemAccessRule(HesapAdi, FileSystemRights.FullControl, InheritanceFlags.None | InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow);
klasorGuvenligi.SetAccessRule(rule);
klasor.SetAccessControl(klasorGuvenligi);
}
}
catch (Exception)
{
MessageBox.Show("klasör izni verilemedi.");
}
}
metodumuz içerisine 2 değer almaktadır HesapAdi ve KlasorYolu. Hesap adımız kullanılan IIS versiyonuna göre değişmektedir. IIS 7 için IIS_IUSRS ve IIS 6 için de IIS_WPG bizim hesap adlarımızdır.
bu metod içerisinde bir noktaya değinicem. aşağıdaki satırda
var rule = new FileSystemAccessRule(HesapAdi, FileSystemRights.FullControl, InheritanceFlags.None | InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow);
FileSystemRights.FullControl kısmı bizim vereceğimiz izni belirtmektedir. biz bura da tam yetki vermişiz siz kendinize uygun olanı kullanabilirsiniz.
şimdide bu metodumuzu nasıl kullanıcaz örnek bir satırda bunu görelim.
YazimIzniVer("IIS_IUSRS", "C:\\inetpub\\wwwroot\\uygulamaklasorunuz\\image");
evet görünen şekilde metodumuza ilk olarak IIS 7 versiyonuna göre hesap adımızı verdik daha sonrada klasör yolumuzu. siz klasör yolunu bir değişken olarakta buraya atayabilirsiniz.
kodumuz çalıştığında image klasörüne belirlediğimiz izin verilecektir. Kolay gelsin...