ASP.NET MVC过滤器执行顺序介绍

如果某个Action过滤器运用了多种过滤器,那么过滤器的执行顺序是如何呢?

规则一:不同类型的过滤器有一个先后顺序

即执行顺序是:授权过滤器->动作过滤器->结果过滤器->异常过滤器

注意:如果ActionFilter过滤器执行过程中发生了异常,那么会执行ExceptionFilter过滤器,不会执行ResultFilter过滤器。上图所示的是正常情况下的执行顺序。

规则二:控制器上面的过滤器优先于方法上面的过滤器

即控制器和方法上面都使用了相同的过滤器,那么先执行控制器上面的过滤器。如下图所示:

规则三、Order属性可以决定过滤器的先后顺序

默认order=-1,即会先执行没有设置order的过滤器。如下图所示:

规则四、如果过滤器的类型相同,相同order的过滤器不能确定谁先执行

如下图所示:

规则五、控制器实现的过滤器接口方法优先执行

上图中实现了ActionFilter过滤器的OnActionExecuting方法,所以先执行这个方法在执行ActionFilter1。如下图所示:

到此这篇关于ASP.NET MVC过滤器执行顺序的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • .NET6自定义WebAPI过滤器

    1.上代码 /// <summary> /// API白名单过滤器 /// </summary> public class APIFilter : ActionFilterAttribute { /// <summary> /// 控制器中加了该属性的方法中代码执行之前该方法. /// 所以可以用做权限校验. /// </summary> /// <param name="context"></param> pub

  • ASP.NET MVC授权过滤器用法

    过滤器 过滤器(Filter)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,并不是每个请求都会响应内容,只有那些有特定权限的用户才能响应特定的内容.过滤器理论上有以下功能: 判断登录与否或者用户权限. 决策输出缓存. 防盗链. 防蜘蛛. 本地化与国际化设置. 实现动态Action(做权限管理系统经常用到). 1.使用方式一 第一种方法是在Controller或Action上面直接使用Authorize特性,不设置特性的任何属性.看下面的截图: 从上面的截图中可

  • ASP.NET MVC自定义操作过滤器

    目录 一.操作过滤器 1.定义 2.案例 2.1.创建自定义操作过滤器 2.2.新建控制器 二.结果过滤器 1.定义 2.案例 三.案例 1.记录操作 1.1.创建实体类 1.2.创建日志类 1.3.修改操作过滤器类 2.实现权限控制功能 一.操作过滤器 1.定义 操作过滤器用于实现IActionFilter接口以及包装操作方法执行.IActionFilter接口声明两个方法:OnActionExecuting和OnActionExecuted.OnActionExecuting在操作方法之前运

  • ASP.NET Core MVC 过滤器(Filter)

    目录 一.过滤器如何工作 1.选择过滤器 2.实现过滤器 3.过滤器作用域 4.取消和短路 二.配置过滤器 1.依赖注入 2.排序 3.对比中间件 一.过滤器如何工作 不同的过滤器类型在管道中的不同阶段执行,因此具有各自的与其场景.根据需要执行的任务以及需要执行的请求管道中的位置,选择要创建的过滤器类型.过滤器在 MVC 操作调用管道中运行,有时也称为过滤管道,在 MVC 中选择要执行的操作后,执行操作上的过滤器,如图: 不同的过滤器在管道内的不同位置执行.像授权过滤器这样的过滤器只在管道中靠前

  • ASP.NET MVC自定义异常过滤器使用案例

    目录 一.需求 二.案例 1.创建工具类 1.1.创建日志工具类 1.2.创建网络工具类 2.创建自定义异常类 3.创建控制器 4.测试 在上一篇文章中讲解了自定义异常过滤器,这篇文章会结合工作中的真实案例讲解一下如何使用自定义异常过滤器. 一.需求 本案例要实现的功能需求:在发生异常时记录日志,日志内容包括发生异常的Controller名称.Action名称.使用浏览器类型和版本等. 二.案例 1.创建工具类 首先创建项目中需要使用的工具类. 1.1.创建日志工具类 在案例中使用Log4net

  • ASP.NET Core MVC 过滤器的使用方法介绍

    过滤器的作用是在 Action 方法执行前或执行后做一些加工处理.使用过滤器可以避免Action方法的重复代码,例如,您可以使用异常过滤器合并异常处理的代码. 过滤器如何工作? 过滤器在 MVC Action 调用管道中运行,有时称为过滤器管道.MVC选择要执行的Action方法后,才会执行过滤器管道: 实现 过滤器同时支持同步和异步两种不同的接口定义.您可以根据执行的任务类型,选择同步或异步实现. 同步过滤器定义OnStageExecuting和OnStageExecuted方法,会在管道特定

  • ASP.NET MVC异常过滤器用法

    我们平常在程序里面为了捕获异常,会加上try-catch-finally代码,但是这样会使得程序代码看起来很庞大,在MVC中我们可以使用异常过滤器来捕获程序中的异常,如下图所示: 使用了异常过滤器以后,我们就不需要在Action方法里面写Try -Catch-Finally这样的异常处理代码了,而把这份工作交给HandleError去做,这个特性同样可以应用到Controller上面,也可以应用到Action方面上面. 注意: 使用异常过滤器的时候,customErrors配置节属性mode的值

  • ASP.NET MVC自定义授权过滤器

    目录 一.授权过滤器 二.示例 1.添加对应实体类 2.添加测试数据 3.新建继承类 4.添加Account控制器 5.修改配置文件 6.添加授权控制器 三.测试 测试Welcome 四.总结 一.授权过滤器 授权过滤器用于实现IAuthorizationFilter接口和做出关于是否执行操作方法(如执行身份验证或验证请求的属性)的安全策略.AuthorizeAttribute类继承了IAuthorizationFilter接口,是授权过滤器的示例.授权过滤器在任何其他过滤器之前运行. 如果要自

  • ASP.NET MVC缓存过滤器用法

    缓存过滤器用来输出页面缓存,其用法如下图所示: 注意: Duration:表示缓存多少秒;VaryByParam:表示缓存是否随地址参数而改变.OutputCache除了可以定义在Action方法上面以外,还可以定义在控制器上面. 演示示例: 新建一个MVC应用程序,添加一个名为Cache的控制器,Cache控制器的Index方法里面将当前时间输出到页面中,Cache控制器定义如下: using System; using System.Collections.Generic; using Sy

  • ASP.NET Core MVC中过滤器工作原理介绍

    过滤器的作用是在 Action 方法执行前或执行后做一些加工处理.使用过滤器可以避免Action方法的重复代码,例如,您可以使用异常过滤器合并异常处理的代码. 过滤器如何工作? 过滤器在 MVC Action 调用管道中运行,有时称为过滤器管道.MVC选择要执行的Action方法后,才会执行过滤器管道: 实现 过滤器同时支持同步和异步两种不同的接口定义.您可以根据执行的任务类型,选择同步或异步实现. 同步过滤器定义OnStageExecuting和OnStageExecuted方法,会在管道特定

  • ASP.NET MVC自定义异常过滤器

    一.异常过滤器 异常筛选器用于实现IExceptionFilter接口,并在ASP.NET MVC管道执行期间引发了未处理的异常时执行.异常筛选器可用于执行诸如日志记录或显示错误页之类的任务.HandleErrorAttribute类是异常筛选器的一个示例. 先来看看HandleErrorAttribute类的定义: #region 程序集 System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364

随机推荐