在我的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+,请使用IWebHostEnvironmentIHostEnvironment代替IHostingEnvironment

如果您想更全局地应用此功能,或者只是想分离出关注点,Daboul将使用this answer中的操作过滤器说明如何这样做。

10-01 11:35