C# Configuration File (App.config,Web.Config,..) Dinamik Olarak Yazmak



Uygulamalarımızın konfugrasyon bilgilerini yani connection stringlerini, hostname gibi application settinglerini ve benzerlerini kaydettiğimiz web.config, app.config, machine.config gibi configuration dosyaları vardır. Uygulamamız çalışmadan önce bir çok ayarı bu dosyalara kaydederiz. Bu dosyaların en büyük yararı program içerisinde bir çok yerde kullanacağımız bilgileri bu dosyalara kaydedip istediğimiz zaman cağırabiliyor olmamızdır. Bunun bize en büyük artısı mesela connection stringimizi buraya değilde hard-code olarak programımıza yazdık. Bir çok yerde vertabanı bağlantısı yapacağımız için connection stringte herhangi bir değişiklik yapacaksak teker teker kod içinde nerelere yazdığımızı bulmamız gerekecekti. Fakat configuration dosyaları sayesinde sadece burda değiştirisek her yerde değiştirmiş olacağız.

Configuration dosyalarına kısa bir giriş yaptıktan sonra asıl konumuza gelelim. Bu configuration dosyalarını uygulamamızın çalışması esnasında değiştirmek istersek ne yapmalıyız? Uygulamamızın bir web uygulaması olduğunu düşünerek anlatacağım. Web uygulamalarında configuration dosyası olarak web.config dosyası bulunmaktadır. Ama uygulamanın çalışması esnasında bu dosyada bir değişiklik yaparsak uygulamamızın restart edilmesi gerekmektedir. Bu yüzden dinamik olarak configuration dosyasında değişiklik yapmak istiyosak direk olarak web.config üzerinde değişiklik yapamayız bu durumda projemize yeni bir configuration dosyası eklememiz gerekmektedir. Bunun için Item -> New Item ile kolayca yapabiliriz.


Yukardaki resimde görüldüğü gibi mysettings.config adında yeni bir configuration dosyası eklemiş olduk. Öncelikle bu mysettings.config dosyasını web.config dosyası içinde tanımlamamız gerekmektedir.
<appsettings configsource="mysettings.config"/>
                      web.config dosyası

bu tanımlamayı yaptıktan sonra mesela mysettings.config dosyasına hostname'imizi kaydetmiş olalım.
<appSettings>

    <add key="hostName" value="http://safakunel.blogspot.com"/>

  <appSettings>
                            mysettings.config dosyası

Şimdi bu tanımladığımız hostName'imizi programda dinamik olarak değiştirelim:
   Configuration c = WebConfigurationManager.OpenWebConfiguration("~");

    AppSettingsSection s = (AppSettins)c.GetSection("appSettings");

    s.Settings["hostName"].value = "http://www.safakunel.com";

    c.Save();

buradaki OpenWebConfigration içindeki "~" karakteri o dizindeki configuration dosyası anlamına geliyor. Daha sonra appSettings içindeki hostName'e ulaşıp "http://safakunel.blogspot.com" olan hostName'i "http://www.safakunel.com" olarak dinamik bir şekilde programın çalışma esnasında değiştiriyoruz. Son olarak bu işlemleri yapabilmemiz için System.Web.Configuration namespace'ini kullanmalıyız bunu unutmayalım. Bu şekilde C# bize dinamik bir şekilde configuration dosyalarına müdahale şansı tanıyor. Hoşçakalın..

0 yorum :

Yorum Gönder