Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

Asp.NET Core – Environment Nedir? Konfigürasyonu Nasıl Yapılır?

Merhaba,

Biz yazılım geliştiriciler bir uygulamanın bulunduğu aşamalara dayalı, davranışını kontrol etmek ve yönlendirmek isteyebiliriz. Bunun için bu içeriğimizde Asp.NET Core uygulamalarının runtime’da ki davranışını belirleyen environment variable üzerine konuşuyor olacağız.

Asp.NET Core çalışma ortamını belirleyebilmek için ‘ASPNETCORE_ENVIRONMENT’ isimli değişkeni kullanmaktadır. Bu değişkenin değeri ihtiyaca göre herhangi bir değer olabilir lakin genellikle geliştirme, sahneleme yahut prodüksiyon anlamlarına karşılık gelen ‘Development’, ‘Staging’ ve ‘Production’ durumları tercih edilmektedir. Bu değerler Linux işletim sistemlerinde büyük küçük harf duyarlılığına sahipken, Windows ve Mac OS işletim sistemlerinde önemli değildir.

Bir Asp.NET Core uygulamasında Environment değişkenlere erişebilmek için Solution Explorer’dan projeye sağ tıklayarak ‘Properties’ -> ‘Debug’ kombinasyonunu takip etmeniz yeterlidir.
Asp.NET Core - Environment Nedir? Konfigürasyonu Nasıl Yapılır?
Açılan pencerede yukarıda görüldüğü üzere “Environment variables” kısmında name – value tarzında ortam değişkenleri tutulmaktadır. Burada aşağıda olduğu gibi istediğiniz kadar değişken oluşturabilirsiniz.
Asp.NET Core - Environment Nedir? Konfigürasyonu Nasıl Yapılır?
Bu değişkenler aşağıda görüldüğü gibi Solution Explorer’da ki ‘Properties’ sekmesi içerisindeki ‘launchSettings.json’ dosyasında ‘environmentVariables’ node’unda tutulmaktadır.
Asp.NET Core - Environment Nedir? Konfigürasyonu Nasıl Yapılır?
Dolayısıyla bu dosya üzerinden ortam değişkenlerine her türlü müdahalede bulunabilir, ekleyip, silebilirsiniz.

Runtime’da Ortam Değişkenlerine Erişim

Asp.NET Core uygulamalarında bulunan ‘Startup.cs’ dosyası üzerinden ‘ASPNETCORE_ENVIRONMENT’ environment değerini içeren ‘IWebHostEnvironment’ parametresi aracılığıyla ‘IsDevelopment’, ‘IsProduction’ ve ‘IsStaging’ durumlarına göre genel environment kontrolü sağlanabilmektedir.
Asp.NET Core - Environment Nedir? Konfigürasyonu Nasıl Yapılır?

Environment Değişkenlerin appsettings.json Dosyasını Ezmesi

Asp.NET Core uygulamalarında statik verileri ‘appsettings.json’ tutmaktayız ve biliyoruz ki bu dosyadaki verileri okuyabilmek için IConfiguration türü üzerinden tarama gerçekleştirmemiz gerekmektedir.

Uygulamada ‘appsettings.json’ dosyasındaki tanımlanan alanlar ile aynı isimde tanımlanan environment değişkenler söz konusuysa environment değişkenler daha üst seviyede oldukları için ‘appsettings.json’ dosyasındaki verileri ezerek öncelik elde ederler.
Şöyle ki;

-- appsettings.json --
{
  "Field": "Field Value - Appsettings.json"
}

içeriğine sahip olan bir ‘appsettings.json’ dosyasıyla birlikte aynı name değerine sahip aşağıdaki gibi environment değişken tanımlandığında environment değişkenin ‘appsettings.json’ dosyasını ezdiği gözlemlenir.
Asp.NET Core - Environment Nedir? Konfigürasyonu Nasıl Yapılır?
Talep;
Asp.NET Core - Environment Nedir? Konfigürasyonu Nasıl Yapılır?

Yani buradan anlaşılan uygulamada bir ‘Configuration[“…”]’ komutu çalıştırılıyorsa öncelikle environment ortamı sorgulanacaktır. Eğer ilgili veri bulunamazsa sırasıyla ‘secrets.json’ ve ardından ‘appsettings.json’ dosyalarında inceleme gerçekleştirilecektir.

Asp.NET Core MVC’de Environment Kontrolü

Eğer üzerinde çalışılan uygulama altyapısı bir MVC mimarisine dayalıysa View katmanında environment’a göre ayrı işlem gerçekleştirebilmek için aşağıdaki tag halper’ı kullanabilirsiniz.

<environment names="Development">
    Development ortamında...
</environment>
<environment names="Production">
    Production ortamında...
</environment>

İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

4 Cevaplar

  1. Gençay dedi ki:

    Merhaba,

    environment taghelper’ı için ‘include’ ve ‘exclude’ attributelarını aşağıdaki amaçla kullanabilirsiniz.

        <environment include="Development">
            @* Sadece Development ortamındaysa *@
        </environment>
    
        <environment exclude="Development">
            @* Development ortamının dışındaysa *@
        </environment>
    

    Kolay gelsin…

  2. Zeynep Öztürkmen dedi ki:

    Merhaba, standart .net’te de enviroment yapılabilir mi? .Net core örnekleri bulabildim sadece.

  1. 04 Nisan 2020

    […] ayağa kaldırılan containerların environment‘ını belirlemek isteyebiliriz. Bunun için aşağıdaki prototipte Docker CLI komutu […]

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir