美丽的神话 发表于 2024-7-28 07:04:42

ASP.NET Core 6.0 Filter 生命周期

Filter生命周期

在 FourthController 控制器新建 Index5 方法,在对应的过滤器中设置断点。 
      
      
      
      
      
      
      public IActionResult Index5()
      {
            return View();
      } 参考之前关于过滤器的文章:
https://blog.csdn.net/nmmking/article/details/139025585https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8https://blog.csdn.net/nmmking/article/details/139025585https://blog.csdn.net/nmmking/article/details/139021374https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8https://blog.csdn.net/nmmking/article/details/139021374https://blog.csdn.net/nmmking/article/details/139023237https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8https://blog.csdn.net/nmmking/article/details/139023237https://blog.csdn.net/nmmking/article/details/138615697https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8https://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
https://img-blog.csdnimg.cn/direct/95f241d36d9d4d53897541c1278be292.png
多个相同的Filter不同注册效果

分别定义三个Filter采用全局注册、控制器注册、Action注册。
    public class CustomActionActionFilterAttribute : ActionFilterAttribute
    {
      public override void OnActionExecuting(ActionExecutingContext context)
      {
            Console.WriteLine("CustomControllerActionFilterAttribute.OnActionExecuting");
      }

      public override void OnActionExecuted(ActionExecutedContext context)
      {
            Console.WriteLine("CustomControllerActionFilterAttribute.OnActionExecuted");
      }
    }     public class CustomControllerActionFilterAttribute : ActionFilterAttribute
    {
      public override void OnActionExecuting(ActionExecutingContext context)
      {
            Console.WriteLine("CustomControllerActionFilterAttribute.OnActionExecuting");
      }

      public override void OnActionExecuted(ActionExecutedContext context)
      {
            Console.WriteLine("CustomControllerActionFilterAttribute.OnActionExecuted");
      }
    }     public class CustomGlobalActionFilterAttribute : ActionFilterAttribute
    {
      public override void OnActionExecuting(ActionExecutingContext context)
      {
            Console.WriteLine("CustomGlobalActionFilterAttribute.OnActionExecuting");
      }

      public override void OnActionExecuted(ActionExecutedContext context)
      {
            Console.WriteLine("CustomGlobalActionFilterAttribute.OnActionExecuted");
      }
    } 以下就是默认实验序次:


[*]1.全局---开始
[*]2.控制器----开始
[*]3.Action上---开始
[*]4.Action被实验
[*]5.Action上---结束
[*]6.控制器----结束了
[*]7.全局结束
https://img-blog.csdnimg.cn/direct/f63af64647df44478cd1f8834b69ee53.png
https://img-blog.csdnimg.cn/direct/d6c2b050c13548378f12cc4459860095.png

https://img-blog.csdnimg.cn/direct/b48a5984f3094018a7aaaaf68a8e5db3.png
可以通过Order 来控制实验序次,Order的值越小,就越先实验:




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: ASP.NET Core 6.0 Filter 生命周期