如何使剃刀页面仅在开发中可用?
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
。
我有一个 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
。