2017-03-14 79 views
5

我正在編寫我的第一個ASP.Net代碼Web應用程序,並在我的控制器中我想要一個if語句來檢查我是否處於調試模式或不。我知道在Startup.cs文件中,我可以檢查env.IsDevelopment(),但那是因爲IHostingEnvironment被傳入它。我一直無法找到一種方法來檢查正常控制器內的這種狀態。有沒有一種方法可以在ASP.Net Core中檢測我在控制器內部處於調試模式時的缺失狀態?ASP.Net核心,在控制器中檢測調試與不調試

回答

8

您應該能夠將IHostingEnvironment注入到控制器構造函數中。

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

謝謝你的工作。我是Core和DI的新手,所以這甚至沒有跨過我的想法。 – Matthew

0

IHostingEnvironment讓你知道應用程序運行的環境。看起來您需要的是用於構建應用程序的構建配置,即Debug/Release。在ASP.NET核心的Web應用程序,以獲取在編譯時該信息,也沒有直接的方法,但你可以有使用條件編譯編譯器指令屬性,像

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

在運行時的東西,您可以檢查IsDebug屬性的值以確定構建配置。我建議將此屬性添加到可從所有控制器訪問的常見靜態或實用程序類。

相關問題