DEV Community

MustafaSamedYeyin
MustafaSamedYeyin

Posted on • Updated on

Asp.net core environment variables Giriş.

Environement variables ne işe yarar ?

Uygulamanın configuration'larını yapar.

Not: Environment variable key-value yapısındadır.

Neden ihtiyaç duyulur ?

Diyelimki uygulamayı publish ettiniz source code'unuz başka birisinin eline bir şekilde geçti. "appsettings.json" "appsettings.Environment.json" configuration'larınızı kötü niyetli kişi okuyabilir. Ama environment variable olarak geçilen değerleri okuyamaz.

Environement variable nasıl atarız ve değerlerini değiştiririz ?

1.) Visual studio projece sağ click atıp properties seçelim :

alt text

Debug menüsüne geliniz :

alt text

Aşağıdaki gibi add buton'una tıklarsanız key-value pair şeklinde evironment variable eklemiş oluruz :

alt text

İstediğiniz key'e karşılık istediğiniz değer'i verebilirisiniz.

Not: ASPNETCORE_ENVIRONMENT key'ine karşılık olarak "Development","Staging","Production" değerlerinden birinin verilmesi evrenseldir.

2.) "launchSettings.json"dan environment variable verebiliriz :

alt text

Properties altında "launchSettings.json" çift tıklayın dosyayı açın :

alt text

Gördüğünüz üzere environmentVariables içerisinde ASPNETCORE_ENVIRONMENT environment variable'ı var. IIS veya Project ismine göre environmentVariables değiştrebilirisiniz veya yaratabilirsiniz.

Environment variable'lara code içerisinden nasıl okuruz ?

a.) Şuana kadar merak etmiş olmalsınız ki configure metodunun içinde parametre olarak IWebHostEnvironment geçiliyor.

alt text

Bu IWebHostEnvironment bize uygulamanın ASPNETCORE_ENVIRONMENT adlı envrionment variable değerlerini bize verebilmektedir.

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                // ASPNETCORE_ENVIRONMENT Development ise bir şeyler yap.
            }
            if (env.IsStaging())
            {
                // ASPNETCORE_ENVIRONMENT Staging ise bir şeyler yap.
            }
            if (env.IsProduction())
            {
                // ASPNETCORE_ENVIRONMENT Production ise bir şeyler yap.
            }
.
.
.
Enter fullscreen mode Exit fullscreen mode

b.) Eğer örneğin aşağıdaki gibi bir environment variable belirlediyseniz

alt text

Bu environment variable'a şöyle ulaşabilirsiniz:

 if (Environment.GetEnvironmentVariable("Mustafa")=="24")
            {
                // Mustafa 24 ise bir şeyler yap.
            }
Enter fullscreen mode Exit fullscreen mode

Environment variable'lara göre düzenlemeleri .cshtml dosyası içerisinde nasıl okuruz ?

Örneğin Index.cshtml dosyasının içerisine şu kodları yazarsak :
a.) include verilen parametreye eşitse ASPNETCORE_ENVIRONMENT variable'ı içerisindeki yazı yazdırılı.

<environment include="Development">
    <div>"include" dersek "ASPNETCORE_ENVIRONMENT" "Development"a eşit olursa bu yazıyı yazdırır Index.chtml dosyası. </div>
</environment>


Enter fullscreen mode Exit fullscreen mode

b.) exclude verilen parametreye eşitse ASPNETCORE_ENVIRONMENT variable'ına içerisindeki yazı yazdırılmaz.

<environment exclude="Development">
    <div>"exclude" dersek "ASPNETCORE_ENVIRONMENT" "Development"a eşit olursa bu yazıyı yazdırmaz Index.chtml dosyası.</div>
</environment>

Enter fullscreen mode Exit fullscreen mode

Sonuç :

  • Environment variable "nedir"ini, "neden güvenlidir"ini ve "nasıl tanımladığını" anladık.
  • IWebHostEnvironment ile nasıl ASPNETCORE_ENVIRONMENT kontrolu yapabileceğimizi gördük : env.IsDevelopment() vs..
  • Environment.GetEnvironmentVariable("key") kullarak custom olarak yazdığımız environment variable'larımızı nasıl erişebileceğimizi gördük.
  • environment tag helper'ına verilen exclude ve include özellikleri ile ASPNETCORE_ENVIRONMENT variable'ının değerini göre .cshtml dosyasını nasıl değiştirebileceğimiziz gördük.

Bir dahaki yazıda görüşmek dileğiyle.

Mustafa Samed Yeyin.

En iyi dileklerim ile.

Discussion (0)