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
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
Bir web.config dosyasının hiyerarşik dizilimi:
ş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
ConfigurationSettings.AppSettings("sConnectionString");
Ayrıca bu ayarlar içerinde SMTP server bilgilerini saklamak da mantıklı bir çözüm olur.
C# Güvenlik Önerileri FileUpload Kontrolünü Etkili Kullanmak ve Güvenlik Konuları