如何使剃刀页面仅在开发中可用?

How to make razor page available only in development?

我有一个 API,其中还包括几个 Razor 页面。我想让这些剃刀页面之一仅在开发期间可用,因为它是一些支持工具。

最好的方法是什么? 使用 IPageFilter? 在csproj文件中使用Condition属性来排除内容文件?

感谢任何工作示例。

如果只屏蔽一个页面,可以直接在Razor页面中定义过滤器:

public class MyRazorPageModel : PageModel
{
    private readonly IWebHostEnvironment _env; // using Microsoft.AspNetCore.Hosting;

    public MyRazorPageModel (IWebHostEnvironment env) // Injected from ASP.NET Core
    {
        _env = env;
    }

    public void OnGet()
    {
    }

    public override void OnPageHandlerExecuting(PageHandlerExecutingContext context)
    {
        // ASPNETCORE_ENVIRONMENT is not set to "Development" in Properties/launchSettings.json: return 404.
        if (!_env.IsDevelopment())  // using Microsoft.Extensions.Hosting;
        {
            context.Result = NotFound();
        }
    }
}

如果要查看调试或发布模式,可以使用#if DEBUG