Environment'a neden ihtiyacımız var?
Yazılım geliştirme süreci Planlama, Analiz, Tasarım, Test, Ürün haline getirme, Geliştirme gibi aşamalardan oluşuyor.
Pre-Alpha, Alpha, Beta, Closed Beta, Open Beta, Preview, Release gibi sürümleri geliştirebileceğimiz ortamların olması gerekiyor.
İlk olarak
Web projemizdeki Startup.cs içerisinde IWebHostEnvironment.EnvironmentName seçili ortama göre koşullarımızı yazabiliriz.
Aşağıda kod bloğunda gördüğünüz gibi Development ortamında geliştirici hata sayfası ve database hata sayfalarını gösteriyor. Production ortamında herhangi bir hata alırsa "/Error" sayfasına yönlendiriyor.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else if(env.IsProduction())
{
app.UseExceptionHandler("/Error");
}
else if(env.IsStaging())
{
//Staging ortamı için
}
}
Razor Sayfalarında Tag Helper ile kullanmak
Environment Tag Helper ile include veya exclude attributeleriyle kullanabiliriz. Aşağıda DEBUG modunda yani Development ortamında normal javascript dosyalarını kullanırken Production ve Staging ortamlarında minimize edilmiş hallerini kullanacaktır.
<environment include="Development">
<script src="~/Identity/lib/jquery-validation/dist/jquery.validate.js"></script>
<script src="~/Identity/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
</environment>
<environment include="Production, Staging">
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.17.0/jquery.validate.min.js"
asp-fallback-src="~/Identity/lib/jquery-validation/dist/jquery.validate.min.js"
asp-fallback-test="window.jQuery && window.jQuery.validator"
crossorigin="anonymous"
integrity="sha384-rZfj/ogBloos6wzLGpPkkOr/gpkBNLZ6b6yLy4o+ok+t/SAKlL5mvXLr0OXNi1Hp">
</script>
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validation.unobtrusive/3.2.9/jquery.validate.unobtrusive.min.js"
asp-fallback-src="~/Identity/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
asp-fallback-test="window.jQuery && window.jQuery.validator && window.jQuery.validator.unobtrusive"
crossorigin="anonymous"
integrity="sha384-ifv0TYDWxBHzvAk2Z0n8R434FL1Rlv/Av18DXE43N/1rvHyOG4izKst0f2iSLdds">
</script>
</environment>
IWebHostEnvironment injection ile Razor Page veya Controller içerisinde kullanmak
Page constructorına IWebHostEnvironment injecte edip, actionlarda kullanabiliriz.
public class IndexModel : PageModel
{
private readonly IWebHostEnvironment _env;
public IndexModel(IWebHostEnvironment env)
{
_env = env;
}
public void OnGet()
{
if(_env.IsDevelopment())
{
//DEBUG modu veya Development ortamı
}
else
{
//Diğer ortamlar için
}
}
}
Environment Ayarlama
Her şey buraya kadar çok güzel, şimdi yapmamız gereken şey deploy veya publish edeceğimiz yere ASPNETCORE_ENVIRONMENT değerini girmemiz gerek.
Denetim Masası > Sistem veya Bu Bilgisayar'a sağ tıklayıp özellikler penceresinden aşağıdaki ayarları yapıyoruz.

Önemli
Internet Information Services (IIS) için bu özelliklerin etkin olmasını istiyorsanız.
net stop was /y sonra net start w3svc komutlarını cmd'ye sırasıyla yazıp çalıştır
- Sunucuyu yeniden başlat