我想知道如何更改顺序或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
,但我还没有找到实现这一点的方法,我也不知道我是否需要这样做。
我该如何更改订单或如何解决?