Asp.Net Mvc Çoklu Web.Config Kullanımı

Coşkun Kurtuldu
3 min readMar 6, 2018

--

Herkese Merhabalar,

Bildiğiniz gibi Web.config ve app.config dosyaları projelerin ortak yapılandırma ayarlarının tutulduğu XML tabanlı bir dosyalardır. Web.config dosyası genelde web projesinin ortak ayarlarının yer aldığı dosyadır. Bunlara örnek verecek olursam sitemizin veritabanı bağlantısının yer aldığı connection stringleri verebiliriz. Aynı şekilde sitemizin mail ayarlarını, sitemizin dil ve kültür bilgilerinin yer aldığı bilgileri de bu dosyadan okuruz.

Local ortamda kullandığımız bazı web config ayarlarını test ortamında veya Prod ortamında değiştirmemiz gerekebilir. Örnek verecek olursam geliştirme ortamında web.config içerisinden okuduğumuz bir dosya yolu farklı, test ortamında farklı, prod ortamında farklı olabilir. Her aktarım yaptığımızda bu ayarları değiştirmemiz karışıklığa sebep olacağı gibi bazı ayarları değiştirmeyi unutabiliriz. Bu sorunu ortadan kaldırabilmemiz için web.config dosyasını test, pre-prod, prod ortamında farklı ayarları config dosyalarını kullanarak, publish edeceğimiz zaman otomatik olarak oluşturduğumuz web.config ayarları seçtiğimiz ortama göre değişiklik gösterecektir.

Hızlıca örneğimize başlayalım.

Yeni bir proje oluşturduğumuzda default olarak web.config altında Web.Debug.config ve Web.Release.config olarak 2 adet config dosyası karşımıza çıkmaktadır.

Default olarak oluşan config dosyaları

Daha sonrasında “Solution Configurations” içerisinde “Configuration Manager” açılarak burada yeni Solution Configuration oluşturalım.

Daha sonrasında ekleyeceğimiz Solution Configuration’ın Debug mode yada Release mode olarak seçerek eklememiz gerekiyor.

Yeni Solution Configuration ayarları

Yeni bir Solution Configuration ekledikten sonra web.config dosyası üzerine sağ tıklayarak “Add Config Transform” seçeneği seçilerek web.config altında yeni bir transform oluşturulur.

Yeni config transform oluşturma ekranı

Yeni bir config tranform oluşturultuktan sonra web.config dosyası altında eklediğimiz tranform karşımıza çıkmaktadır. Yeni oluşan transform içerisinde örnek kullanımlar yorum satırı içerisinde karşımıza çıkmaktadır.

Oluşturulan örnek transform içeriği

Şimdi web.config içerisinde kullandığımız bir <appSettings> içerisinde bulunan değeri oluşturduğumuz config transform içerisinde başka bir değerle tanımlayalım.

Öncelikli olarak web.config içerisinde <add key=”EMail” value=”coskun.kurtuldu@codevist.com” /> değerini oluşturduğum transform içerisinde bu değeri <add key=”EMail” value=”coskun.kurtuldu@codevist.com” xdt:Transform=”SetAttributes” xdt:Locator=”Match(key)”/> olarak ekliyorum.

Web.Config ve CodevistMultiWebConfig.config dosya içerikleri

Bu değişikliği yaptıktan sonra transform olarak eklediğimiz config dosyasının web.config dosyamızda nasıl görüntüleneceğini önizleyebiliriz. Bunun için tranform olarak oluşturduğumuz config dosyası üzerinde sağ tıklayarak “Preview Transform” seçilerek önizleme ekranı karşımıza çıkmaktadır.

Preview Transform görüntüsü

Böylelikle transform olarak kullandığımız config dosyasının normalde web.config dosyası içerisinde nasıl görüldüğüne ulaşmamız ve kontrol etmemiz mümkün.

Peki.. Projeyi publish ederken oluşturduğumuz bu config transform ayarlarının nasıl etkin olmasını sağlayacağız?

Publish yaparken karşımıza çıkan setting kısmı içerisinde “configuration” ayarları içerisinde daha önceden eklemiş olduğumuz “CodevistMultiWebConfig” seçeneğini seçerek oluşturmuş olduğum transform config ayarlarının geçerli olmasını sağlamış oluyorum.

Pubslish ayarları içerisinde oluşturulan configuration seçimi

Faydalı olması dileğiyle..

--

--