C#面试题更新 2026-08-05

请解释 .NET 中中间件的概念,并说明在 ASP.NET Core 中如何实现自定义中间件?

编码实现技术原理ASP.NET Core.NET

考察说明

考查对 ASP.NET Core 请求管道中中间件机制的理解及自定义实现能力。

回答思路

  1. 【回答框架 1】中间件是 ASP.NET Core 请求管道中的组件,每个中间件可检查、修改请求或响应,并决定是否调用下一个中间件,形成链式处理。
  2. 【回答框架 2】创建自定义中间件通常通过约定式类,包含 RequestDelegate 类型的 next 参数和 InvokeAsync 方法,也可通过工厂或基于约定的方式实现。
  3. 【回答框架 3】在 Startup 或 Program 中通过 Use、Run、Map 等扩展方法注册中间件,顺序决定执行顺序,Use 可短路管道。
  4. 【回答框架 4】中间件支持依赖注入,可注入服务,但需注意生命周期,Scoped 服务需通过 InvokeAsync 参数注入。
  5. 【回答框架 5】自定义中间件常用于日志、认证、错误处理等横切关注点,需考虑性能与异常处理。
  6. 【关键点 1】中间件构成请求管道,按注册顺序执行。
  7. 【关键点 2】自定义中间件需实现 InvokeAsync 方法并调用 next。
  8. 【关键点 3】Use 可短路,Run 终止管道,Map 按路径分支。
  9. 【关键点 4】依赖注入时注意 Scoped 服务的注入方式。
  10. 【关键点 5】中间件顺序影响功能,如异常处理应靠前。
  11. 【易错点 1】不要忘记调用 next 导致管道中断。
  12. 【易错点 2】避免在中间件中注入 Scoped 服务到构造函数,应通过 InvokeAsync 参数注入。
  13. 【易错点 3】中间件顺序错误可能导致功能失效,如静态文件中间件应放在认证前。