在我的ASP.NET核心Web应用程序中,我想要一个仅在开发模式下运行的操作。在生产模式下,可能会出现404错误就足够了。有可能这样做吗?
最佳答案
这可以通过将IHostingEnvironment
注入(inject)您的 Controller 并在 Action 本身内部使用其IsDevelopment()
方法来实现。这是一个完整的示例,在开发环境以外的任何环境下运行时,都会返回404:
public class SomeController : Controller
{
private readonly IHostingEnvironment hostingEnvironment;
public SomeController(IHostingEnvironment hostingEnvironment)
{
this.hostingEnvironment = hostingEnvironment;
}
public IActionResult SomeAction()
{
if (!hostingEnvironment.IsDevelopment())
return NotFound();
// Otherwise, return something else for Development.
}
}
对于ASP.NET Core 3.0+,请使用
IWebHostEnvironment
或IHostEnvironment
代替IHostingEnvironment
。如果您想更全局地应用此功能,或者只是想分离出关注点,Daboul将使用this answer中的操作过滤器说明如何这样做。