ASP.NET Farklı Ortamlar İçin Web.config Dosyası Üretimi(Web Transforms)

ASP.NET projenizi publish ederken settings değerleriniz veya connectin string değerlerinde sizin kullandığınız değerlerin olmasını istemiyorsanız o zaman farklı web.config dosyaları ayarlamalısınız.

ASP.NET Farklı Ortamlar için Web.config dosyası Üretimi(Web Transforms)

Şimdi bir web projesi oluşturalım yada varolan projenizde yer alan web.config dosyasındaki Connection string değerini release modda publish ettiğimizde farklı veya boş connection string bilgisi ile yapalım.

Web.config dosyasını farklı modlara oluşturmak için Web.config dosyanıza sağ tuş yapıp Add Config Transform deyin eğer bu buton pasif durumdaysa o zaman tüm modlar için Web.config dosyaları oluşturulmuştur. Farklı modlar için oluşturulmuş Web.config Transform dosyaları alttaki gibi Web.config dosyası altında yer alacaktır.

Web Transforms

Gördüğünüz gibi Debug ve Release modları için farklı Web.config dosyaları oluştulmuş şimdi projede çalışırkenki Web.config dosyamıza gözatalım.

XML(Web.config)

Buradaki connection string bilgisinin benim makinama ait connection string bilgisi olduğunu düşünelim kimsenin sizin bilgilerinizi öğrenmesini istemezsiniz herhalde eğer makinanıza dış ip ile erişim sağlanıyorsa hiç istemezsiniz. yeri geliyor acil olarak projelerde değişiklik yapıp yayınlamanız gerekiyor bu aciliyette Web.config dosyasından publish ettikten sonra ilgili alanları düzenlemek yada ekleme yapmanız gerekmektedir. işte burada sıkıntı olabiliyor kendi makinanıza ait bağlantı bilgilerini yanlışlıkla unuttuğunuzu düşünelim bu durumda sizin için bir risk doğuyor. Şimdi bu sorunu aşmak için projeyi Release modda kaydettiğinizde yukarıdaki Web.config dosyasında yer alan MyDB adlı connection string bilgisini boş olarak yayınlanmasını sağyalayım.

Web.Release.config Transform dosyasına giriş alttaki değişiklikleri yaptığınızda proje publish edildiğinde boş connection string bilgisi ile kaydedilecektir.

XML(Web.Release.config)

Yukarıdaki kodda gördüğünüz gibi xdt:Transform attribute’ünde yapılacak işlemi belirttiyoruz connection string etiketindeki xdt:Transform attribute’ünde işlemin attirute değiştirmek olduğunu söylüyoruz. hangi attribute’ün değerişeceğinide xdt:Locator etiketi ile söylüyoruz burada Match metoduna parametre olarak name değeri vermişiz buda şu demek oluyor name attribute’ündeki değer ile orjinal Web.config dosyasındaki connection string etiketleri arasında name attirbute’ü ile eşleşen connection string bilgisini değiştir diyoruz.

Yukarıdaki kodda bir farklı xdt:Transform attribute’ünüde compilation etiketinde görebilirsiniz buradaki etiketin amacıda compilation etiketinden debug attribute’ü Release modda publish edildiğinde silinmesini istemişiz.

Projeyi Relase modda publish ettiğinizde aşağıdaki gibi bir Web.config dosyası üretilecektir.

XML(Web.config)

Yukarıdaki Web.config dosyasına ait Release modda publish işleminden sonraki son halinde gördüğünüz gibi Web.Release.config dosyasında yaptığımız işlemler uygulanmış biz connection string bilgisi boş ve compilation etiketinden ise debug attribute’ünün kaldırılmasını istemiştik.

Web Transform Farklı Bazı İşlemler

Tüm Etiketleri Silme

Bu örneğimizde configuration > system.webServer  etiketi altındaki rewrite etiketi etiketinin tümünü sileceğiz. Tümünü silmek istediğiniz etikete xdt:Transform=”RemoveAll” şeklinde bir tanımlama yaptığınızda tüm rewrite etiketleri silinecektir.

Tek Etiket Silme

Tek etiket silmek istediğinizde yukarıdakinden farklı olarak yapmanız gereken RemoveAll yerine Remove tanımı yapmanız ve tek silme olacağı için benzersiz bir etiket olan name ve benzeri attribute’ü kullanarak tekli silme işlemini gerçekleştirebilirsiniz.

Üstteki kodda xdt:Tranform’una tek silme gerçekleştireceğimiz için Remove tanımı yaptık ve hangi connectionStrings altındaki add etiketinin silineceğini ise xdt:Locator kısmında Match(name) yani name attribute’ü ile eşleşen add etiketi silinecektir.

Bir Cevap Yazın