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 :
Debug menüsüne geliniz :
Aşağıdaki gibi add buton'una tıklarsanız key-value pair şeklinde evironment variable eklemiş oluruz :
İ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 :
Properties altında "launchSettings.json" çift tıklayın dosyayı açın :
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.
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.
}
.
.
.
b.) Eğer örneğin aşağıdaki gibi bir environment variable belirlediyseniz
Bu environment variable'a şöyle ulaşabilirsiniz:
if (Environment.GetEnvironmentVariable("Mustafa")=="24")
{
// Mustafa 24 ise bir şeyler yap.
}
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>
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>
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.
Top comments (0)