C# ActionFilters未按预期顺序执行,可能是autofac问题

C# ActionFilters未按预期顺序执行,可能是autofac问题,c#,asp.net-mvc-5,autofac,C#,Asp.net Mvc 5,Autofac,我有两个动作过滤器,其中一个要在另一个之前显式执行。我没有运气让他们按照预期的顺序合作和执行 public class RedirectSingleAttribute : ActionFilterAttrbute { public UrlHelper Url { get; set; } // <= injected in OnActivating public override void OnActionExecuted(ActionExectuedContext filter

我有两个动作过滤器,其中一个要在另一个之前显式执行。我没有运气让他们按照预期的顺序合作和执行

public class RedirectSingleAttribute : ActionFilterAttrbute {
   public UrlHelper Url { get; set; } // <= injected in OnActivating
   public override void OnActionExecuted(ActionExectuedContext filterContext) {
       /* ... magic ... */
   }
}

public class JsonRedirectAttribute : ActionFilterAttribute {
    public override void OnActionExecuted(ActionExecutedContext filterContext) {
        /* ... magic ... */
    }
}

public class SearchController : Controller {
    [RedirectSingle(Order = 1)]
    [JsonRedirect(Order = 2)]
    public ActionResult Query(SearchCriteria criteria) {
        /* some code */
    }
}

您是否尝试过将“Scope”枚举值与“Order”属性一起设置。此msdn链接可能会带来一些启示:


谢谢。

请不要只发布链接答案,因为链接可能会断开。虽然我相信我尝试过颠倒顺序,但情况似乎并非如此,因为我刚刚尝试过颠倒顺序,它们执行得很正确。这篇文章有助于解释这一点:
/* ... */
builder.RegisterControllers(typeof(MvcApplication).Assembly);
/* ... */
builder.RegisterType<RedirectSingleAttribute>();
builder.RegisterType<JsonRedirectAttribute>()
    .OnActivating(c => c.Instance.Url = c.Context.Resolve<UrlHelper>());
/* ... */
builder.RegisterFilterProvider();
/* this ended up not working all, i.e. the action filters were never invoked */
builder.RegisterType<RedirectSingleAttribute>()
    .AsActionFilterFor<SearchController>(c => c.Query(default(SearchCriteria)), 1);
builder.RegisterType<JsonRedirectAttribute>()
    .OnActivating(c => c.Instance.Url = c.Context.Resolve<UrlHelper>())
    .AsActionFilterFor<SearchController>(c => c.Query(default(SearchCriteria)), 2);