当前位置: 首页 > news >正文

ASP.NET Core面试精讲系列八

目录

116. 什么是过滤器(Filters)

117. Filters 与 Middleware 的区别

118. 执行顺序

119. 自定义过滤器

120. 全局过滤器 vs 局部过滤器

121. Filter Context

122. 短路(Short-circuiting)

123. 特性过滤器 vs 服务过滤器

124. Filters 与 Middleware 的结合


上一篇

116. 什么是过滤器(Filters)

过滤器是在 MVC 或 Razor Pages 管道中执行的组件,可在控制器方法执行的不同阶段插入逻辑。 类型包括:

  • Authorization Filter:最先执行,用于身份验证与授权。

  • Resource Filter:在模型绑定前运行,可控制缓存或资源访问。

  • Action Filter:在 Action 执行前后执行。

  • Exception Filter:处理 Action 中未捕获的异常。

  • Result Filter:在结果生成前后执行。


117. Filters 与 Middleware 的区别

  • 执行阶段

    • Middleware:全局 HTTP 管道

    • Filter:MVC/Razor 内部

  • 作用范围

    • Middleware:所有请求

    • Filter:控制器 / Action

  • 典型用途

    • Middleware:日志、认证、CORS

    • Filter:授权、验证、结果处理

  • 可否中断

    • Middleware:可短路整个请求

    • Filter:可短路 MVC 执行

简言之:Middleware 处理全局逻辑,Filter 处理 MVC 层逻辑。


118. 执行顺序

  1. Authorization Filters

  2. Resource Filters

  3. 模型绑定

  4. Action Filters

  5. Exception Filters

  6. Result Filters

同类型过滤器可通过 Order 属性控制优先级。


119. 自定义过滤器

示例:

public class CustomActionFilter : IActionFilter { public void OnActionExecuting(ActionExecutingContext context) { } public void OnActionExecuted(ActionExecutedContext context) { } }

注册方式:

services.AddControllers(options => options.Filters.Add<CustomActionFilter>());

或使用:

[ServiceFilter(typeof(CustomActionFilter))]

120. 全局过滤器 vs 局部过滤器

  • 全局:在 AddControllers 中注册,对所有控制器生效。

  • 局部:在控制器或 Action 上标注,仅限局部使用。

全局适合日志/异常,局部适合业务逻辑控制。


121. Filter Context

过滤器可通过上下文访问:

  • HttpContext 与请求信息

  • Action 参数与返回结果

  • 可提前终止或修改执行结果


122. 短路(Short-circuiting)

过滤器可提前返回结果,阻止后续执行:

if (!IsAuthorized()) { context.Result = new UnauthorizedResult(); }

123. 特性过滤器 vs 服务过滤器

  • 特性过滤器(Attribute):简单直接,参数化方便。

  • 服务过滤器(ServiceFilter/TypeFilter):从 DI 容器解析,支持依赖注入。


124. Filters 与 Middleware 的结合

  • Middleware:处理全局跨域、认证、日志。

  • Filter:处理 MVC 层授权、验证、结果包装。

二者结合可实现全局到局部的精细化控制。

引入地址

下一篇

http://www.jsqmd.com/news/465949/

相关文章:

  • 访问后台路径(admin.php)时,提示“403 Forbidden”,无法进入后台,前台可正常访问原因分析
  • Python基于flask+uniapp微信小程序的校园学生社团签到系统 可视化
  • Python开发英语记忆单词软件
  • Python基于flask+uniapp微信小程序的校园智能垃圾分类回收预约平台
  • 氯代烷烃源头厂家盘点:2026年谁主性价比之巅? - 2026年企业推荐榜
  • 工业智能网关+物联网云平台的一体化解决方案
  • 2026年毕业季降AI工具怎么选?亲测比话降AI效果实录
  • Python基于Django的汉语文本阅读难度分级系统(附源码,文档说明)
  • Ppt设计资源合集
  • Spring Framework 中文官方文档
  • 《AI原生应用自然语言理解:突破局限,创造无限可能》
  • Python基于flask+uniapp微信小程序的校园服务闲置物品交易失物招领系统平台
  • 研发工程师晋升背后的逻辑:一些背后的思考与行动指南
  • areal异步技术分析
  • 2026年DeepSeek写的论文AI率98%怎么办?实测从98%降到8%的全过程
  • 2026上海雅思培训机构推荐:科学选择备考机构指南 - 品牌排行榜
  • 2026年降AI工具性价比排行:花最少的钱降到最低
  • 排序查找,简单模板
  • 基于vue的校园兼职系统的设计与实现Python django flask
  • 操作教程 | DataEase基于插件实现数据源与飞书多维表格的对接
  • 车型大小识别系统报告与程序PPT
  • 新版本火绒拦截局域网共享
  • Python基于flask+uniapp微信小程序的校园访客来访登记平台
  • 论文AI率不达标别急着改,先看看这几款降AI工具
  • CVE-2026-28473
  • AI专著生成秘籍大公开!高效工具助你快速完成专业学术著作
  • 打造远距离无线链路:SI24R1+AT2401C组合方案详解与实战应用
  • CVE-2026-28474
  • 为什么论文降AI越改越像AI?80%的人都踩了这3个坑
  • Python基于flask+uniapp微信小程序的校园跑腿帮任务接单互助系统