2017-03-14 71 views
5

İlk ASP.Net kod web uygulamasında yazıyorum ve denetleyicimde hata ayıklama modunda olup olmadığımı denetleyen bir if deyim var istiyorum ya da değil. Startup.cs dosyasında env.IsDevelopment()'u kontrol edebildiğimi biliyorum, ancak bunun nedeni IHostingEnvironment'un içine aktarılmış olmasıdır. Bu durumu normal denetleyicide kontrol etmenin bir yolunu bulamadım. ASP.Net Core'da eksik olan denetleyicide hata ayıklama modunda olduğumu algılamanın bir yolu var mı?ASP.Net Core, bir hata ayıklayıcıda hata ayıklama değil hata ayıklama

cevap

8

Denetleyici kurucunuza yalnızca IHostingEnvironment enjekte edebilmelidir.

protected readonly IHostingEnvironment HostingEnvironment; 

public TestController(IConfiguration configuration, IHostingEnvironment hostingEnv){ 
    this.Configuration = configuration; 
    this.HostingEnvironment = hostingEnv; 
} 

[HttpGet] 
public IActionResult Test(){ 
    if(this.HostingEnvironment.IsDevelopment()){ 
     // Do something 
    } 

    return View(); 
} 
+0

Çalıştığınız için teşekkürler. Core ve DI ile yeniyim, bu yüzden aklımdan bile geçemedim. – Matthew

0

IHostingEnvironment uygulamanın çalıştığı çevreyi bilmesini sağlar. İhtiyacınız olan şey, uygulamayı oluşturmak için kullanılan yapılandırma yapılandırmasıdır, örn. Debug/Release. Bir ASP.NET Çekirdek web uygulamasında, derleme sırasında bu bilgileri almak için, hiçbir yalındır yolu yoktur, ancak Çalışma zamanında

public static bool IsDebug 
{ 
    get 
    { 
     bool isDebug = false; 
    #if DEBUG 
     isDebug = true; 
    #endif 
     return isDebug; 
     } 
} 

gibi bir koşullu derleme kullanarak derleyici direktifleri özelliği, bir şeyler olabilir Yapı yapılandırmasını belirlemek için IsDebug özelliğinin değerini kontrol edebilirsiniz. Bu özelliği, tüm denetleyicilerinizden erişebileceğiniz ortak bir statik veya yardımcı program sınıfına eklemenizi öneririm.