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 请求,实现客户端与服务器之间的全双工实时通信。
相关推荐
Hanniel2 小时前
Python 元类(下):进阶与实战建议
开发语言·python
会编程的土豆3 小时前
Go interface 底层的 itab 到底是什么
开发语言·后端·golang
千纸鹤の脉搏3 小时前
多线程的初步了解---进程与线程
java·开发语言·学习·线程
秋田君3 小时前
Qt 5.12.8 下载与安装教程(附网盘资源)
开发语言·qt
故事和你913 小时前
洛谷-【动态规划2】线性状态动态规划4
开发语言·数据结构·c++·算法·动态规划·图论
不吃土豆的马铃薯3 小时前
Socket 网络编程实战教程
linux·服务器·开发语言·网络·c++·算法
小成202303202653 小时前
从C到C++
开发语言·c++
折哥的程序人生 · 物流技术专研3 小时前
《Java 100 天进阶之路》第39篇:Java泛型方法的定义和使用
java·开发语言·后端·面试·求职招聘
天天进步20153 小时前
Tunnelto 源码解析 #1:从 tunnelto --port 8000 看内网穿透的完整链路
开发语言