Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC过滤器(相同类型)是否按照代码中包含的顺序执行,这是否有保证?_C#_Asp.net_Asp.net Mvc_Action Filter_Actionfilterattribute - Fatal编程技术网

C# ASP.NET MVC过滤器(相同类型)是否按照代码中包含的顺序执行,这是否有保证?

C# ASP.NET MVC过滤器(相同类型)是否按照代码中包含的顺序执行,这是否有保证?,c#,asp.net,asp.net-mvc,action-filter,actionfilterattribute,C#,Asp.net,Asp.net Mvc,Action Filter,Actionfilterattribute,当包含MVC过滤器时,我知道它们可以在以下位置注册 全局(FilterConfig.cs) 控制器级 行动级别 我还知道有4种类型,它们按以下顺序执行: 授权过滤器 动作过滤器 响应滤波器 异常过滤器 然而,我对这里的优先级有点困惑: 位置是否按所示顺序执行 假设位置是按顺序执行的,哪个优先:类型还是位置 如果在同一位置声明了多个相同类型的筛选器,会发生什么情况?它们是否按照定义的顺序执行 例如,如果我有如下6个过滤器,它们将以什么顺序执行 // FilterConfig.cs filter

当包含MVC过滤器时,我知道它们可以在以下位置注册

  • 全局(FilterConfig.cs)
  • 控制器级
  • 行动级别
  • 我还知道有4种类型,它们按以下顺序执行:

  • 授权过滤器
  • 动作过滤器
  • 响应滤波器
  • 异常过滤器
  • 然而,我对这里的优先级有点困惑:

    • 位置是否按所示顺序执行
    • 假设位置是按顺序执行的,哪个优先:类型还是位置
    • 如果在同一位置声明了多个相同类型的筛选器,会发生什么情况?它们是否按照定义的顺序执行
    例如,如果我有如下6个过滤器,它们将以什么顺序执行

    // FilterConfig.cs
    filters.Add(new AuthorizationFilter());
    filters.Add(new ActionFilter());
    
    -


    这回答了你的问题吗@HasanElsherbiny有一部分,但我仍然不清楚在RegisterGlobalFilters中添加的过滤器的顺序
    // MyController.cs
    [AuthorizationFilter2]
    [ActionFilter2]
    public class MyController
    { 
        [AuthorizationFilter3]
        [ActionFilter3]
        public ActionResult MyAction()
        {
             return foo;
        }
    }