首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么"OnActionExecuted“以相反的顺序执行?

为什么"OnActionExecuted“以相反的顺序执行?
EN

Stack Overflow用户
提问于 2015-08-16 10:01:51
回答 1查看 310关注 0票数 1

我有两个动作过滤器"ActionFilter1“和"ActionFilter2,

代码语言:javascript
复制
public class ActionFilter1 : FilterAttribute, IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpContext.Current.Application["Order"] += "Action 1: OnActionExecuting <br/>";
    }

    public void OnActionExecuted(ActionExecutedContext filterContext)
    {
        HttpContext.Current.Application["Order"] += "Action 1: OnActionExecuted <br/>";
    }
}

public class ActionFilter2 : FilterAttribute, IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpContext.Current.Application["Order"] += "Action 2: OnActionExecuting <br/>";
    }

    public void OnActionExecuted(ActionExecutedContext filterContext)
    {
        HttpContext.Current.Application["Order"] += "Action 2: OnActionExecuted <br/>";
    }
}

我在带有"Order“的控制器操作方法上应用了这两个过滤器,

代码语言:javascript
复制
[ActionFilter1(Order = 1)]
    [ActionFilter2(Order = 2)]
    public ActionResult Index()
    {
        return View();
    }

在浏览器上执行Page时,执行的动作筛选器的输出如下,

行动1: OnActionExecuting

行动2: OnActionExecuting

行动2: OnActionExecuted

行动1: OnActionExecuted

问题-为什么"OnActionExecuted“以相反的顺序执行,而"OnActionExecuting”顺序是正确的,因为我提供了属性?

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-16 10:04:58

这是记录在案的行为。这是链接论MSDN

OnActionExecuting(ActionExecutingContext)、OnResultExecuting(ResultExecutingContext)和OnAuthorization(AuthorizationContext)过滤器按前向顺序运行。OnActionExecuted(ActionExecutedContext)、OnResultExecuting(ResultExecutingContext)和OnException(ExceptionContext)过滤器按相反顺序运行。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32033868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档