我在Azure上有专门用于WebJobs的WebApi控制器。我想禁用具体环境的执行方法。 我有想法将appSetting添加到配置文件中,如果它是假的,那么请不要执行这些方法。
如果我将这个条件添加到方法中,这很简单。但我不想这样做。 我正在考虑使用CustomActionFilter然后如果条件满足返回并且不执行方法体。 有可能吗?
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!bool.Parse(ConfigurationManager.AppSettings["WebJobsShouldWork"] ?? "true"))
// stop executing method
else
// go ahead
}
答案 0 :(得分:1)
在web api操作过滤器中,您可以创建响应并将其放入Response
操作上下文中:
class SampleFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext context)
{
if (/* some condition */)
{
context.Response = context.Request.CreateResponse(HttpStatusCode.OK);
}
else
{
// go ahead
}
}
}
答案 1 :(得分:0)
使用filterContext.Result = new EmptyResult();
示例:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!bool.Parse(ConfigurationManager.AppSettings["WebJobsShouldWork"] ?? "true"))
filterContext.Result = new EmptyResult();
}