NetCore常用的中间件说明

var builder = WebApplication.CreateBuilder(args);

var app = builder.Build(); ......

基础与诊断类

  • UseDeveloperExceptionPage:专门用于开发环境。当应用抛出未处理的异常时,它会生成一个包含详细错误堆栈和调试信息的页面,方便开发者排查问题。
  • UseExceptionHandler:用于生产环境。它会捕获管道后续中间件抛出的未处理异常,并返回用户友好的错误响应或重定向到指定的错误处理页面。
  • UseStatusCodePages:当响应状态码为 400-599 且没有响应体时,提供默认的错误页面或处理逻辑。
  • UseHealthChecks:用于检查应用及其依赖项(如数据库、外部API)的健康状态。通常用于负载均衡器或容器编排系统(如 Kubernetes)的存活探针。

请求处理与安全类

  • UseRouting:路由中间件。它会分析传入请求的 URL,并将其与应用中定义的终结点(Endpoints)进行匹配,为后续的授权和终结点执行做准备。
  • UseAuthentication :身份验证中间件。它尝试识别当前请求的用户身份(例如解析 JWT Token 或 Cookie),并构建 HttpContext.User 对象。
  • UseAuthorization:授权中间件。在身份验证之后运行,用于检查当前已验证的用户是否有权限访问特定的资源(例如基于角色的访问控制)。
  • UseCors:跨域资源共享中间件。用于配置和启用跨域请求策略,允许或拒绝来自不同域名的浏览器请求。
  • UseHttpsRedirection:HTTPS 重定向中间件。自动将所有 HTTP 请求重定向到安全的 HTTPS 协议。
  • UseHsts :HTTP 严格传输安全(HSTS)中间件。在响应中添加 Strict-Transport-Security 标头,强制浏览器在未来一定时间内只通过 HTTPS 访问该网站,增强安全性。
  • UseAntiforgery:防伪中间件。用于防止跨站请求伪造(CSRF/XSRF)攻击,通常在表单提交或 Razor Pages/MVC 应用中配合使用。
  • UseCookiePolicy :Cookie 策略中间件。用于跟踪用户是否同意存储个人信息(符合 GDPR 等法规),并强制实施 Cookie 的最低安全标准(如 SecureSameSite 属性)。

静态资源与网络优化

  • UseStaticFiles:静态文件中间件。用于提供 wwwroot 目录下的静态资源(如 HTML、CSS、JavaScript、图片等)。如果请求匹配到静态文件,通常会直接返回并终止后续管道的执行。
  • UseResponseCompression:响应压缩中间件。对 HTTP 响应体进行压缩(如 Gzip、Brotli),以减小传输数据的大小,提高页面加载速度。
  • UseResponseCaching :响应缓存中间件。根据请求和响应中的缓存标头(如 Cache-Control)来控制响应的缓存行为。

其他实用中间件

  • UseSession:会话状态中间件。启用基于 Cookie 的会话管理,允许在多次请求之间保存用户数据。
  • UseForwardedHeaders:转发标头中间件。当应用部署在反向代理(如 Nginx、IIS)后面时,用于将代理服务器转发的标头(如真实的客户端 IP、协议 Scheme)应用到当前请求的上下文中。
  • UseHttpLogging:HTTP 日志记录中间件。用于记录传入的 HTTP 请求和传出的 HTTP 响应的详细信息。
  • UseWebSockets:WebSocket 中间件。启用并处理 WebSocket 请求,实现客户端与服务器之间的全双工实时通信。
相关推荐
西门吹-禅12 小时前
java springboot N+1问题
java·开发语言·spring boot
skywalk816312 小时前
设计并实现段言的 C FFI 绑定机制 @Trae
c语言·开发语言·python·编程
IT笔记14 小时前
【Rust】Rust Match 模式匹配详解
java·开发语言·rust
2zcode14 小时前
免费开源项目文档:基于MATLAB卷积神经网络的口罩佩戴检测系统
开发语言·matlab·cnn
逝水无殇14 小时前
C# 运算符重载详解
开发语言·后端·c#
TPBoreas14 小时前
配置信息防泄露方案:.env 环境隔离详解(dotenv-java)
java·开发语言
敲代码的嘎仔15 小时前
实习日志day6--实习日志day6--title命名规范化&businessType纠正&补充缺失的@Log注解&报警与通信模块补充&产出阶段总结文档
java·开发语言·人工智能·git·python·实习·大二
江华森15 小时前
Python 实现高德地图找房(一):环境搭建与数据爬虫
开发语言·爬虫·python
杜子不疼.15 小时前
【Qt初识】信号槽(三):机制意义、断开连接与 Lambda 表达式
开发语言·数据库·qt
老迟到的茉莉16 小时前
Hermes 是谁?跟 Claude Code 差在哪
开发语言·python