【发布时间】:2019-07-26 02:17:00
【问题描述】:
有什么推荐的方法可以让一个 restful 端点 api 甚至一个控制器在开发中公开,但在发布到其他环境时它不可用?
【问题讨论】:
标签: .net-core asp.net-core-webapi
有什么推荐的方法可以让一个 restful 端点 api 甚至一个控制器在开发中公开,但在发布到其他环境时它不可用?
【问题讨论】:
标签: .net-core asp.net-core-webapi
没有内置的方法可以做到这一点。您必须执行类似将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()
【讨论】:
Profile 属性。