C#、ASP .NET Core 笔记记录(一)Filter筛选器多个执行顺序

声明:本文是博主整理随笔笔记,仅作为交流参考使用。如有问题,恭迎您的指正

Filter 过滤器

其本质是为了解决面向切面编程、运行在ASP .NET Core管道内的一种机制。
继承各类IFilter创建自己的筛选器方法此处略过不表,可参考微软文档:微软文档->筛选器

多Filter添加及触发顺序

本文 主要记录ASP .NET Core添加多个Filter的顺序与Filter触发顺序的关系,如图:
在这里插入图片描述
AIChat认为通过options.Filters.Add<>()添加的Filter顺序就是Filter被触发时执行的顺序,但当我们实际使用时发现Filter的触发顺序似乎并非是和Add<>()添加顺序一致。这时候最直接的就是看看源码中Add<>()做了什么操作导致添加和触发顺序不一致:
在这里插入图片描述
到源码中我们看到似乎Add<>()会默认给一个order的属性赋值为0,至此我们似乎可以猜测为何会出现上面说的不一致问题了。
原来使用FilterCollection.Add<>()时添加的Filter默认将order值赋值为0,而Add<>()添加多个Filter时,最后添加的Filter筛选器的order属性值为0。当该类型的Filter触发时,order值为0(即最后被Add<>()添加)的filter会最先被触发。

即:使用FilterCollection.Add<>()添加多个Filter时,后添加的先执行;先添加的后执行

所以如果想控制多个Filter筛选器的执行顺序,可以根据设计的执行顺序在添加时将顺序颠倒。或者使用含有参数order的FilterCollection,Add(int order)添加方法,来手动指定多个Filter的执行顺序。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值