2017-03-14 81 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属性的值以确定构建配置。我建议将此属性添加到可从所有控制器访问的常见静态或实用程序类。

相关问题