什么是建议的方法,以允许在开发中公开宁静的终结点api甚至控制器,但是在发布到其他环境中后不可用?
答案 0 :(得分:3)
没有内置方法可以做到这一点。您必须执行类似的操作,将IHostingEnvironment
注入到控制器中,然后在操作中进行如下检查:
if (!env.IsDevelopment())
{
return NotFound();
}
这将使外观路由实际上不在开发环境之外。如果您要做的足够多,那么创建可以应用的自定义资源过滤器实际上可能会更好:
public class DevelopmentOnlyAttribute : Attribute, IResourceFilter
{
public void OnResourceExecuting(ResourceExecutingContext context)
{
var env = context.HttpContext.RequestServices.GetService<IHostingEnvironment>();
if (!env.IsDevelopment())
{
context.Result = new NotFoundResult();
}
}
public void OnResourceExecuted(ResourceExecutedContext context)
{
}
}
然后您可以将其应用于以下相关操作:
[DevelopmentOnly]
public IActionResult Foo()