0

私は2つのフィルターを持っています:

public class ValidateModelStateFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        if (actionContext.ModelState.IsValid == false)
        {
            actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.BadRequest);
        }
    }
}

public class AuthorizeRequestAttribute : Attribute, IAuthorizationFilter
{
    public bool AllowMultiple
    {
        get { return false; }
    }

    public async Task<HttpResponseMessage> ExecuteAuthorizationFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func<Task<HttpResponseMessage>> continuation)
    {
        // TODO: validate the request

        return await continuation();
    }
}

最初のものはGlobal.asax Application_Startメソッドに登録されています:

protected void Application_Start()
{
    GlobalConfiguration.Configuration.Filters.Add(new ValidateModelStateFilter());
}

2 つ目はコントローラー アクションに追加されます。

[HttpGet]
[AuthorizeRequestAttribute]
public string GetValue(GetValueRequest request)
{
    return _service.GetValue(request.Product_Id);
}

フィルターの[AuthorizeRequestAttribute]前に実行されるという事実を除いて、すべてが機能します。[ValidateModelStateFilter]

[ValidateModelStateFilter]他のフィルターの前に実行するにはどうすればよいですか?

4

1 に答える 1