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.

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.

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.

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.

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.
![]()
Talep;

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…

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…
Merhaba, standart .net’te de enviroment yapılabilir mi? .Net core örnekleri bulabildim sadece.
Merhaba,
Şuradaki içeriği incelemenizi tavsiye ederim.
Kolay gelsin.