如果条件

时间:2016-12-21 09:03:40

标签: c# asp.net-web-api

我在Azure上有专门用于WebJobs的WebApi控制器。我想禁用具体环境的执行方法。 我有想法将appSetting添加到配置文件中,如果它是假的,那么请不要执行这些方法。

如果我将这个条件添加到方法中,这很简单。但我不想这样做。 我正在考虑使用CustomActionFilter然后如果条件满足返回并且不执行方法体。 有可能吗?

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    if (!bool.Parse(ConfigurationManager.AppSettings["WebJobsShouldWork"] ?? "true"))
        // stop executing method
    else
        // go ahead
}

2 个答案:

答案 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();
}