ASP.NET yapılandırma dosyaları, XML biçimindeki dosyalardır. ASP.NET 2.0 ile birlikte bu XML dosyalarının daha kolay bir şekilde yönetilebilmesi için Configuration Management Application Programming Interface (Yapılandırma Yönetimi Uygulama Programlama Arayüzü) olarak adlandırılan bir arayüz geliştirilmiştir. Configuration API ile başta web.config dosyası olmak üzere yapılandırma dosyaları ve bu dosyaların içeriği, XML dosyalarıyla çalışmak zorunda kalmadan, etkin ve kolay bir şekilde geliştirilebilir ve yönetilebilir. Configuration API yalnızca Web uygulamalarında değil, masaüstü uygulamalarının yada geliştirilen komut script (betik)'lerinin yapılandırma dosyalarının yönetilmesinde de kullanılır. Temel olarak ise web.config dosyalarının yapılandırılmasında kolaylıklar sağlamaktadır.
Bir web.config dosyası, ilişkilendirildiği Web uygulamasına ait bazı temel ayarlara sahiptir. appSettings, connectionStrings, authentication, authorization,sessionState gibi düğümler içerir. Bu düğümler Configuration API arayüzünde birer nesne olarak belirlenmiştir. Örneğin, appSettings düğümünün karşılığıAppSettingsSection nesnesi, sessionState düğümünün karşılığı SessionStateSection nesnesidir. Bu nesneler yardımıyla web.config dosyasının içeriği kolay bir şekilde düzenlenebilir. web.config dosyası Configuration sınıfına ait bir nesne olarak ele alınabilir. Configuration API içerisinde Configuration tipinde nesne yaratılmasında iki temel sınıftan bahsedilebilir. Bunlardan biri System.Configuration isim uzayında yer alan ve sadece Web uygulamaları için değil, diğer uygulamalarda da kullanılabilecek ConfigurationManager sınıfıdır. Diğeri ise System.Web.Configuration isim uzayında yer alan ve daha çok Web tabanlı uygulamalar için elverişli WebConfigurationManager sınıfıdır.
Bu sınıfın önemli metodları aşağıdakilerdir:
- OpenWebConfiguration(): web.config dosyalarını elde etmeye yarar.
- OpenMachineConfiguration(): machine.config dosyasına erişimi sağlar.
Configuration tipinde nesneler yaratan bu metodların "overloaded" (aşırı yüklenmiş) sürümleri mevcuttur. Bu metodlar ile yaratılan Configuration tipinde nesneler sayesinde, yapılandırma dosyaları üzerinde pratik bir şekilde düzenleme, kaydetme gibi işlemler yapılabilir.
Ancak web.config içindeki bazı düğümler için nesne tipleri mevcut değildir. Bu düğümleri nesneler olarak elde etmek ve yönetebilmek için GetSection()metodundan faydalanılır.
GetSection(): İlgili düğümü alır ve geriye ConfigurationSection tipinde bir nesne döndürür. Daha sonra bunun uygun nesnelere çevirilmesi için casting (dönüştürme) uygulanır. Örneğin, sessionState düğümü GetSection() metoduna parametre olarak verilerek ConfigurationSection tipinde bir nesne elde edilir ve dönüştürme işlemiyle bu nesne SessionStateSection nesnesine çevirilir. Böylece sessionState düğümü için geçerli tüm özelliklere erişilebilir.
web.config İçeriğinin Configuration API ile Düzenleme Uygulaması
Aşağıda web.config dosyasının appSettings ve sessionState düğümlerinin içeriğinin bir Web arayüzüne taşınması, değişiklikler yapılıp kaydedilmesini içeren bir uygulama yer almaktadır:
- Öncelikle web.config dosyasının içeriği düzenlenir:
- web.config içerisinde yer alan düğümleri nesneler olarak elde etmek ve işlemler yapmak için aspx.cs sayfasında gerekli düzenlemeler yapılır. appSettings düğümüne erişmek için aşağıdaki kod yazılır:
Burada config nesnesine OpenWebConfiguration() metodu ile açılan web.config dosyası, appSec nesnesine de AppSettings metodu kullanılarak appSettings düğümü atanır.
- sessionState düğümüne erişmek içinde aşağıdaki koddan yararlanılır:
- Web arayüzünde projenin görüntülenmesi, değişiklik yapılabilmesi ve kaydetme işleminin yapılabilmesi için ise aşağıdaki kod düzenlenmelidir:
Uygulama Sonrası Web Sayfaları
- aspx sayfasının da doğru bir şekilde düzenlenmesinin ardından Web tarayıcısı ile proje açılırsa aşağıdaki gibi bir sayfayla karşılaşılır:
- Varsayilan Posta ve Oturum Zamanı için Yeni Değer kutusuna değiştirilen değerler girilir:
- Kaydet tuşu tıklandığında değerlerin değiştiği görülür:
- Listeden VarsayilanPosta yerine VarsayilanHataSayfasi seçilirse içerik değişecektir:
- Varsayilan Hata Sayfasi ve Oturum Zamanı için Yeni Değer kutusuna değiştirilen değerler girilir:
- Kaydet tuşu tıklandığında değerlerin değiştiği görülür:
- web.config dosyasının değiştirilen değerlerden sonra son hali aşağıdaki gibidir: