ASP.NET içerisinde Development, Production ve Staging çoklu ortamların kullanılması

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

 

 

Yorumlar kapalı