Perşembe, Ekim 02, 2008

web.config-I

web.config ASP.net ile haşır neşir olan herkesin birgün kesinlikle karşılaşacağı ve daha da önemlisi bir daha onsuz yapamayacağı bir dosya. Evet dosya çünkü içinde bildiğimiz XML formatında yazılmış bazı veriler var. Bu veriler ise işte o noktada kıyamet kopuyor doğru ayarlar sizi birçok sorumluluktan korurken, yanlış veya bilinmeyen yönleriyle bizi çok sıkı bir yola itiyor. Ben bu yazımda karşılaştığım ve sık sık kullandığım konulara yer vermeye çalışacağım.
Öncelikle web.config neyi ayarlar konusuna değinmeliyiz. Web.config aslında her server da bulunan ve güvenlik, doğrulama ve diğer verileri taşıyan machine.config dosyalarını ezmeye yarayan bir dosyadır. Ezmeye sözcüğünü kullandım çünkü durumu bu sözcük çok iyi anlatıyor. web.config ile ayarladığınız konularda sizin ayarlarınız etkin olurken hiç değinmediğiniz konularda serverda bulunan machine.config ler içindeki bilgilere göre hareket ediliyor. machine.config- ler diyorum çünkü machine.configler çok sayıdadır. (Birisi .net framework klasörü içindedir.) Local ISS ile çalıştırdığımız asp.net sayfalarımız için machine.config leri kullanarak da düzenleme yapabiliriz fakat bu iyi bir yöntem değildir çünkü çoğu programcı kendi bilgisayarında yazdığı kodu kendi ISS i ile internete yaymaz. config dosyalarının hiyerarşisini anladığımıza göre benim karşılaştığım noktalara değinebiliriz.
İlk konu bölgesel konular.Biz kullandığımız çoğu veriyi serverdan alma ihtiyacı duyarız. Saat - Tarih gibi bilgileri DateNow(); ile alınca benim bilgisayarımda Amerikan formatlarına göre gelirken Türkiyedeki bir hosting firmasında Türkiye ye göre gelir ve godaddy den hosting almışsanız yine Amerikan formatlarında gelir. Türk kullanıcıya 12.02 PM 12 Aug . 2008 gibi bi veriyi okutmak pek doğru olmaz. Bu sorunu çözmek için serverdaki ayarları kendinize göre değiştirmeniz gerekir. Bunu da web.config içerisine
<system.web>


<globalization culture="tr-TR" uiCulture="tr-TR" />

</system.web>

ekleyerek sağlayabilirsiniz.
Burada eksik kalan nokta XML yapısında olan bir döküman olduğu için web.config içerinde zaten element olarak <system.web> yazmanıza gerek yoktur. İncelediğinizde zaten var olduğunu göreceksiniz.


Bir web.config dosyasının hiyerarşik dizilimi:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
</system.web>
</configuration>


şeklindedir.
Diğer önemli konu da web.config global bir dosyadır. En önemli özelliklerinden biri dışarıdan bir kullanıcının bu dosyayı indirip okuyamıyor olmasıdır. Durum böyle olunca bizim global verilerimiz için de iyi bir saklama konumu olacaktır. Sql bağlantısı kullanan uygulamalarda ConnectionString bilgisini bu dosyaya <configuration> elementleri arasına yazmak adettendir. Adet olarak kabul görmesinin sebebi ise SqlConnection bilgilerimiz değişince sadece tek yerden bu veriyi değiştiriyor olmamızdır. Bu veriyi kodlarımız arasında nasıl kullanacağız derseniz tek satırlık kod ile işiniz çözülecektir.
ConfigurationSettings.AppSettings("sConnectionString");

Ayrıca bu ayarlar içerinde SMTP server bilgilerini saklamak da mantıklı bir çözüm olur.


0 yorum:

Yorum Gönder