0

我想知道如何更改顺序或do something控制方法的执行顺序。

I have this class prototype:

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
public abstract class ApiDbAuthAttribute : System.Web.Http.Filters.ActionFilterAttribute, IAuthorizationFilter {
     public override void OnActionExecuting(HttpActionContext actionContext) {
         // this I want to go off first
     }

     public void OnAuthorization(AuthorizationContext filterContext) {
        // this I want to go off after the first
     }

     public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) {
        // this at the end
     }
}

实际发生了什么:

 1. OnAuthorization
 2. OnActionExecuting
 3. OnActionExecuted 

我知道,这是正确的顺序,我知道应该是这样,但是我正在触发UnitOfWork OnActionExecuting,这是我在使用此过滤器时使用 DB 的原因。
PS:我正在使用

using IAuthorizationFilter = System.Web.Mvc.IAuthorizationFilter;

我知道两者之间有区别System.Web.Http.Filters.IAuthorizationFilter,但我还没有找到实现这一点的方法,我也不知道我是否需要这样做。

我该如何更改订单或如何解决?

4

0 回答 0