|
ASP.NET Yapılandırma ve Web.Config |
|
Gönderiliyor lütfen bekleyin... |
|
|
ASPNET’in en güzel yanlarından biri güçlü yapılandırma sistemidir.
Bu yapılandırma sistemi XML tabanlı dosyalar kullanır ve Web.Config adlı dosyada
saklanır. Bir ASP.NET uygulamasına herhangi bir Web.config dosyası eklenmediğinde
varsayılan olarak, Microsoft Framework ile gelen Machine.config dosyasından
yapılandırmayı kalıtımla alır. Lakin bu hiçbir zaman yeterli değildir. Zaten
Visual Studio.NET’de Visual Web 2005 de bizim için kendileri temel yapılandırmalara
sahip birer Web.config dosyası oluşturuyor.
Unutulmaması gereken bir konu da Machine.config dosyası sadece
ASP.NET uygulamaları için değil; tüm makina için gerekli yapılandırma ayarlarını
içerir. Bu yüzden yapılandırmaları Machine.config de değil Web.config’de yapmak
en mantıklısıdır. Web.Config dosyasını kullanarak tüm uygulamamıza tek bir dosyadan
ulaşıp uygulamamızın yapılandırmasını tamamen tekelimize alıp en üst düzeyde
performans sağlayabiliriz. Örneğin; uygulamamızın farklı yerlerinde farklı Web.config
dosyaları kullanarak farklı düzeyde güvenlik, hata yönetimi, derleme durumu,
oturum yönetimi, şifreleme ve bir çok farklı yapılandırmaları kullanabiliriz.
Bu da bize hatırı sayılır bir esneklik kazandıracaktır.
Bir Web.config dosyası standart XML bildirimi ile (<?xml
version...) başlar fakat bu olmadan da çalısabilir. Ama Web.config dosyası mutlaka
<configuration> bildirimini ve bu bildirimler içinde de <system.web>
etiketlerini barındırmak zorudandır. Aşağıda Visual Web Dewoloper 2005 beta
ile birlikte Microsoft geliştiricilerinin hazırladığı örnek bir ASP.NET uygulaması
olan StarterKit’in Web.config dosyasından bir kısım bulunmaktadır. Bu ayarları
ve denetimleri örnek alarak incelemeye başlayalım.
<?xml
version="1.0"?>
<configuration>
<location path="Admin/Albums.aspx">
(admin dizinindeki albüm.aspx ile ilgili ayarlar)
<system.web>
<authorization> (hangi hesap yada rollerin
kaynaklara ulaşabileceğini bildiren öğenin başlangıcı )
<allow roles="Administrators" />
( burda admin grubundan herkesin girebileceği belirtiliyor.)
<deny users="*"/> (bu
sayfaya giremeyecek grup "*" karakteri ile herkes(admin harici))
</authorization>
</system.web>
</location>
<system.web>
<customErrors mode="Off"></customErrors>
(Hata sayfalarının yapılandırılması)
<compilation defaultLanguage="C#"/>
(uygulama dili seçimi)
<authentication mode="Forms">
(kimlik denetiminin yapılma stili belirtiliyor- burda
forums denetimi seçilmiş )
<forms name=".ASPXAUTH"
loginUrl="Default.aspx" protection="Validation" timeout="300"/>
(kullanıcının
login olmak için gideceği sayfa, kimlik doğrulama yöntemi ve süresini belirtiliyor.)
</authentication>
<globalization requestEncoding="utf-8"
responseEncoding="utf-8"/>
<roleManager enabled="true">
</system.web>
</configuration> |
Yukardaki Web.config dosyası tam ve eksiksiz değildir. Sadece
şeklen ilk bakış olsun istedim. Şimdi yukarıdaki ve yukarıda geçmeyen diğer
yapılandırmaları tek tek inceleyelim.
ASP.NET Yapılandırma elemanları
Yapılandırma öğeleri Camel case(deve biçimli) ve büyük/küçük
harf duyarlıdır. Deve biçimli yapılandırma öğeleri; bir yapılandırmanın ilk
kelimesini ilk harfi küçük; ikinci ve sonra gelen kelimelerin ilk harfleri büyüktür.
localOnly gibi.
Aşağıdaki anlatımda sözdizimlerinde kullanılabilecek tüm değerler
verilmiştir örneğin; batch="true|false" true yada false değerinden
biri, enableSessionState="true|false|ReadOnly"
true, false veya ReadOnly seçeneklerinden biri kullanılabilir.
1. <httpRuntime>
<httpRuntime>
öğesi ASP.NET HTTP motorunun çalışma zamanındaki çesitli özelliklerini denetler.
Kullanımı ve söz dizimi;
<httpRuntime>
appRquestQueulLimit="istek sayısı"
executionTimeout="saniye"
maxRequestLength="kbayt"
minFireThreads="bekletilecek
en düşük iş parçası sayısı" |
( başka öznitelikler de var ama sadece bir kısmı kullanıldı
)
-
appRquestQueulLimit:
bir 503-Server Too Busy hatası vermeden önce ASP.NET in kuyruğa sokacağı istek
sayısını belirler. Varsayılan değeri 100’dür.
-
executionTimeout:
Klasik ASP’deki Server.ScriptTimeout özelliğine benzer ve uzun süre bekleyen
ve asılı kalan istekleri kapatılmadan önce yürütüleceği saniyeyi belirtir.
Varsayılan değeri= 90 saniyedir.
- maxRequestLength:
Kilobayt olarak gelen dosya yüklemelerinin en büyük boyutunu belirler.Bu özellik
sunucunuza büyük dosya yükleyerek yapılan saldırılar için çok önemlidir. Bu
öznitelik için varsayılan değeri ise 4,096 kbayt.
- minFireThreads:
ASP.NET’in yeni istek işlemek için bekleleteceği
en düşük is parçası sayısıdır. Varsayılan değeri 8’dir.
2. <Compliation>
ASP.NET’in en kampsamlı yapılandırma öğesidir. Bu yapılandırma
genelde Web Servisleri ve diğer ASP.NET web uygulamalarının kodlarının derleme
biçimlerinini içeren özniteliklerden oluşur. Kullanımı ve sözdizimi;
<Compliation
batch="true|false"
batchTimeout="saniye"
debug="true|false"
defaultLangue="Kullanılan
uygulama dili"
explicit="true|false"
maxBatchSize="Sayfa sayısı"
maxBatchGeneratedFileSize="kbayt"
numRecompilesBeforeAppRestart="sayı"
strict="true|false"
tempdirectory="dizin">
<compiler
extension="dosya
uzantıları"
compilerOptions="derleyici
ayarları"
type=".NET
türü"
warningLevel="sayı"
</compiler>
<assemblies>
<add
assembly="montaj adı"/>
<remove
assembly="montaj adı"/>
</assemblies>
</Compliation> |
- batch:
Uygulamanızın ASP.NET sayfalarının toplu halde derlemeyi destekleyip desteklemediğini
belirtir. "true" değerini seçerseniz toplu derleme desteklenir.
Varsayılan değer true. "false" değerini seçerseniz her sayfa çağırıldığında
derlenir. Bu da pek iyi bir seçenek değildir.
- batchTimeout:
Bu öznitelikle eğer toplu derlemeyi (<batch>) true olarak seçtiyseniz
toplu derlemenin zaman aşımından önce geçecek süreyi saniye olarak belirtir.
Varsayılan değer 15 saniyedir.
- debug:
ASP.NET sayfalarının ve Web Servislerinin derlenmiş montaja hata ayıklama
bilgilerinin eklenip eklenmeyeceğini belirtir. Bu özelliğin her zaman "false"
olması daha uygundur varsayılan olarakta "false" olarak belirlenmiştir.
Çünkü hata ayıklama montajları büyüktürler ve bu bazı sorunlara neden olabilir.
- defaultLangue:
Bu özelliğin varsayılan değeri VB.NET’dir. Bu derleme sırasında kullanılacak
dili belirtir ki bu ve buna benzer bir çok yapılandırma otomatik olarak uygulamanıza
eklenir. Örneğin Visual Studio ile bir C# Web uygulaması başlattığınızda Visual
Studio sizin için oluşturacağı Web.config dosyasına <compilation defaultLanguage="C#"/>
belirtimini ekler.
-
explicit:
Bu denetim VB.NET için geçerlidir bu yüzden geçiyoruz.
- strict:
Bu denetim de VB.NET için geçerlidir varsayılan ayarı false’dır.
- tempdirectory:
Derlemeden kaynaklanan geçici ASP.NET dosyalarının adreslerinin belirtildiği
özniteliktir. Geçerli herhangi bir dizin olabilir.
- compiler
a. extension:
Geri kod sayfası dediğimiz sayfasının uzantısının belirlendiği alandır (.vb,
.cs, gibi) bu alan zaten bundan önce gelen langue denetimi ile özdeş olur Visual
Studio ve/veya diğer yazılım geliştirme araçları bizim için bu ayarı da otomatik
olarak yaparlar.
b.
compilerOptions: Derleme sırasında geçirelecek
derlemeye özgü tüm seçenekleri içerir. Kullanılabilen bir seçenek belirlemeyi
ya varsayılan ayar alarak Visual.Studio ya da kullandığınız uygulama geliştirme
aracına brakın yada geçerli bir seçenek bulmak için SDK belgelerine bakabilirsiniz.
c.
type: default languae yada extension özniteliklerindeki
uzantıyı kullanarak hangi sınıf ve/veya montajların kullanılacağını belirtir.
Fakat bu nitelikle oynamamak en iyisidir zira zaten bizim için bu varsayılan
şekliyle kabul edilir. Ayrıca bu varsayılan ayarların çoğu zaman yeterlidir.
d.
warningLevel: Bu nitelikde derleyici hatalari
ile ilgilidir. Derleyicinin verdiği uyarı iletisi türlerini belirleyen düzey
denetimidir. C# için varsayılan olarak "1" değeri belirlenmiştir.
Herhangi bir degişiklik yapmak pek gerekmez.
a.
<add
assembly: Bir montajı derleme sırasında
başvurulmak üzere adına göre belirler. Önbellekteki tüm geçerli montajları almak
için"*" karakteri kullanilabilir.
b.
<remove
assembly: Derleme sırasında kullanımdan
kaldırılmak istenen montajların belirtilmesi için varolan yapılandırmadır. Bir
üst de eklenen (add assembly ile) montajlar silinebilir. BU öznitelikte de "*"
karakteri kullanılarak bütün montajlar silinebilir fakat bu add assembly’deki
kadar sağlıklı değildir.
3. <pages>
Bu özellik genellikle sayfa düzeyi özniteliklerine ait varsayılanlari
ayarlamaya izin verir. Tüm ASP.NET sayfalarında (@ Page ASP.NET komutu bulunanlar
hariç) geçerlidir. Bu öğenin kullanımı ve söz dizimi ise şöyledir:
<pages>
autoEventWireup="true|false"
buffer="true|false"
enableSessionState="true|false|ReadOnly"
enableViewState="true|false"
enableViewStateMac="true|false"
pageBaseType="türadı, montaj"
smartNavigation="true|false"
userControlBaseType="türadı"/>
<pages>
|
- autoEventWireup:
Varsayılan ayarı true’dur. Page_Load ve benzeri sayfa olaylarının otomatik
olarak desteklenip desteklenmeyeceğini belirleyeceğimiz özniteliktir. "false"
seçilirse olay desteği sağlanmayacaktır.
- buffer:
Bu özellikl çok önemlidir; önbelleğe alınıp allınmamaya dair ayarlar bu öznitelikten
yapılır. ASP’deki Response.Buffer özelliğine benzer. Varsayılan değeri true
olarak atanmıştır. Eğer "false" değerini seçersek sayfalar çağırıldıkça
gönderilir. Bu yapılandırma, hız açısından çok önemlidir.
- enableSessionState:
Geçerli kullanıcı için varsayılan ayar olarak bir ASP.NET sayfası tarafından
yeni bir oturum acılıp açılmayacağına karar verir. Eğer bu niteliği "false"
olarak ayarlarsanız kullanıcı önceki bir sayfadan zaten bir oturumu varsa,
bu öznitelik o oturumu etkilemez. Diğer taraftan "ReadOnly" olarak
ayarlanırsa sayfanın önceki ayarlarının değişmesi önlenir. Varsayılan değeri
"true"’dır.
- enableViewState:
ViewState’ in (ASP.NET server controls sayfa istekleri durum depolama yöntemi)
etkin olup olmayacağına karar verilen öz niteliktir. "true" seçilmesi
durumunda ViewState etkindir. "false" da ise ViewState etkin değildir
ve sunucu denetimi her istekte sıfırlanır.
- pageBaseType:
Bu özniteliğin ASP.NET geri koddaki System.Web.UI isim alanını Page sınıfından
alınmasını sağlamaktır.
4. <customErrors>
ASP.NET’te çok kullanılan bir diğer öğe de uygulamamızın hata
durumlarında verdiği mesajlarını özelleştirmemize imkan veren <customErrors>
özniteliğidir. Bununla ayrıca ASP.NET’in ürettiği ham hataları da yönetebilirsiniz.
Yukarıda StarterKit’in Web.config dosyasındaki kullanımı da bakabilirsiniz <customErrors
mode="Off"></customErrors> şeklinde kullanılmıştır şimdi
daha detaylı olarak bakalım Söz dizimi ve kullanımı;
<customErrors
defaultRedirect="gecerli bir url"
mode="on|off|RemoteOnly"
<error
redirect="gecrli url"
statusCode="hata durumlarinda
kullanacagimiz kod"/>
</customErrors>
|
- defaultRedirect:
Bir hata olduğunda kullanıcının yönlendirileceği sayfayı belirlediğimiz kısım
burasıdır.
- mode="on|off|RemoteOnly":
Bu öğe ham ASP.NET hatalarının kullanıcıya gönderilip gönderilmeyeceğine karar
verir.
<customErrors
mode="Off"></customErrors> burda görüldüğü gibi Starter
Kit yapımcıları bunun olmasını istememiş ve "Off" olarak belirtmişler.
Böylece oluşan her hatada ASP.NET in kendi hata sayfaları görükecektir. Yalnız
bu değeri seçmek pek mantıklı değildir. Zira kullanıcılar sizin istemediğiniz
bir cok bilgiyi görebilir, bu yüzden tavsiye edilmez. Eğer bu değer “On” olarak
belirtilseydi özel hatalar etkin olacaktı ve kullanıcı <defaultRedirect="hata
URL si>" ne yollanacakdı yada daha iç bir öge olan <error>’a
yönlendirilecekti. Bir diğer değer olan "RemoteOnly" seçildiginde
ise; özel (ham) hatalar yerel sunucu daki kullanıcıya gözükecek ama uzak istem
yapan(local olmayan) kullanıcıyı ise sadece uzak istemciler için geçerli olan
bir hata sayfasına yönlendirecektir. Yani RemoteOnly seçili olduğunda ham
hataları sadece geliştirici görebilir.
- <error:
Bu alt etiket daha fazla hata denetimi sağlar hatanın HTTP durum kodlarına
dayanarak "statusCode"(404-Not found vs.) de belirttiginz kodu kullanır
ve koddakine uygun bir hata olursa "redirect" te bildirdiğiniz URL
ye gider.Bu alt etiket olmadan da sadece <customErrors> un ilk öğesi
olan <defaultRedirect> te kullanılabilir. Böylelikle bütün hatalar <defaultRedirect>
teki URL’ye yönlendirilir.
5. <globalization>
Bu öge ASP.NET te uygulamanın genelleşmesi ayarlarını denetler.
Yukarıdaki örnekte de StarterKit’in Global ayarları için kullanıldığını görebilirsiniz.
Bu, istek,yanıt ve dosyalar için kullanılan kodlamanın yani sıra web uygulamanızdaki
yerel kültürel(dil vb.) ayarları da içerir. <globalization>
öğesinin söz dizimi aşağıdaki gibidir;
<globalization
culture="herhangi gecerli kültür bildirim dizesi"
fileEncondig="herhengi
bir gecerli kodlama dizesi"
requestEnconding="herhengi
bir gecerli kodlama dizesi"
responseEncondig="herhengi
bir gecerli kodlama dizesi"
uiCulture="gecerli(yerel
kültür) dize bildirimi"/>
|
- requestEnconding:
karakter kodlaması(gelen istek) için kullanılır yukarıdaki uygulamada "utf-8"
olarak bildirildiğine dikkat edin. Bu özniteliği ayarlamaz iseniz varsayılan
olarak"utf-8" kabul edilecektir.
- responselEncondig:
karakter kodlaması(giden istek) için kullanılır yukarıdaki uygulamada "utf-8"
olarak bildirildiğine dikkat edin. Bu özniteliğide ayarlamaz iseniz varsayılan
olarak "utf-8"i kabuledecektir.
- uiCulture:
Bu özellik yerel kültüre özgü ayarlamalar için kullanılır, Bu tür yerel dizeler
için System.Globalization.CultureInfo sınıfından yararlanabilirsiniz.
Bu makalemizde
ASP.NET uygulamamızın ayarlarını yapmak için varolan Web.Config isimli dosyada
bulunabilecek bazı ayarları inceledik.
Makale:
ASP.NET Yapılandırma ve Web.Config ASP.NET Hüseyin Dönmez
|
|
|
-
-
Eklenen Son 10
-
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
|
|