ASP.NET Core 6.0 Filter 生命周期

打印 上一主题 下一主题

主题 532|帖子 532|积分 1596

Filter生命周期

在 FourthController 控制器新建 Index5 方法,在对应的过滤器中设置断点。 
  1.         [Authorize(AuthenticationSchemes = CookieAuthenticationDefaults.AuthenticationScheme, Policy = "rolePolicy")]
  2.         [CustomCacheResourceFilter]
  3.         [TypeFilter(typeof(CustomLogActionFilterAttribute))]
  4.         [TypeFilter(typeof(CustomResultFilterAttribute))]
  5.         [TypeFilter(typeof(CustomAlwaysRunResultFilterAttribute))]
  6.         [TypeFilter(typeof(CustomExceptionFilterAttribute))]
  7.         public IActionResult Index5()
  8.         {
  9.             return View();
  10.         }
复制代码
参考之前关于过滤器的文章:
https://blog.csdn.net/nmmking/article/details/139025585
https://blog.csdn.net/nmmking/article/details/139025585https://blog.csdn.net/nmmking/article/details/139021374
https://blog.csdn.net/nmmking/article/details/139021374https://blog.csdn.net/nmmking/article/details/139023237
https://blog.csdn.net/nmmking/article/details/139023237https://blog.csdn.net/nmmking/article/details/138615697
https://blog.csdn.net/nmmking/article/details/138615697分别把6个Filter全部注册到某一个方法,访问 FourthController  的 Index5 :


  • a.验证权限,进入到Authorization
  • b.ResourceFilter 中的--OnResourceExecuting
  • c.开始创建控制器实例
  • d.ActionFilter 中的--OnActionExecutinge.实验Action方法
  • f.ActionFilter 中的--OnActionExecuted
  • g.ResultFilter 中的--OnResultExecuting
  • h.AlwaysRunResultFilter 中的-OnResultExecuting
  • i.渲染视图
  • j.AlwaysRunResultFilter 中的OnResultExecuted
  • k.ResultFilter 中的--OnResultExecuted
  • L.ResourceFilter中的--OnResourceExecuted

多个相同的Filter不同注册效果

分别定义三个Filter采用全局注册、控制器注册、Action注册。
  1.     public class CustomActionActionFilterAttribute : ActionFilterAttribute
  2.     {
  3.         public override void OnActionExecuting(ActionExecutingContext context)
  4.         {
  5.             Console.WriteLine("CustomControllerActionFilterAttribute.OnActionExecuting");
  6.         }
  7.         public override void OnActionExecuted(ActionExecutedContext context)
  8.         {
  9.             Console.WriteLine("CustomControllerActionFilterAttribute.OnActionExecuted");
  10.         }
  11.     }
复制代码
  1.     public class CustomControllerActionFilterAttribute : ActionFilterAttribute
  2.     {
  3.         public override void OnActionExecuting(ActionExecutingContext context)
  4.         {
  5.             Console.WriteLine("CustomControllerActionFilterAttribute.OnActionExecuting");
  6.         }
  7.         public override void OnActionExecuted(ActionExecutedContext context)
  8.         {
  9.             Console.WriteLine("CustomControllerActionFilterAttribute.OnActionExecuted");
  10.         }
  11.     }
复制代码
  1.     public class CustomGlobalActionFilterAttribute : ActionFilterAttribute
  2.     {
  3.         public override void OnActionExecuting(ActionExecutingContext context)
  4.         {
  5.             Console.WriteLine("CustomGlobalActionFilterAttribute.OnActionExecuting");
  6.         }
  7.         public override void OnActionExecuted(ActionExecutedContext context)
  8.         {
  9.             Console.WriteLine("CustomGlobalActionFilterAttribute.OnActionExecuted");
  10.         }
  11.     }
复制代码
以下就是默认实验序次:


  • 1.全局---开始
  • 2.控制器----开始
  • 3.Action上---开始
  • 4.Action被实验
  • 5.Action上---结束
  • 6.控制器----结束了
  • 7.全局结束




可以通过Order 来控制实验序次,Order的值越小,就越先实验:
[CustomControllerActionFilterAttribute(Order =20)]
[CustomActionActionFilterAttribute(Order =-99)]


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美丽的神话

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表