只要是自定义中间件,无论简单复杂,全部封装成扩展方法!
- 日志中间件 →
app.UseLogMiddleware()→ 必须封装 - 异常中间件 →
app.UseGlobalException()→ 必须封装 - 以后任何中间件 → 全都封装
这不是可选,是规范、专业、架构整洁度的体现。
一、为什么中间件要封装?
- Program.cs 干净、清爽、一眼看懂( Program.cs 只负责调用 ,不负责细节**)**
- 符合官方风格(UseCors、UseRouting...)
- 以后加参数、加配置,不用动 Program.cs
- 别人一看就知道你是专业后端
二、最关键的一句话(背住)
UseMiddleware 是底层机制,拓展方法是规范封装( 拓展方法 = 语法糖 = 让代码更优雅、更规范、更像官方框架风格**)**
功能一样,档次不一样。现在可以这么理解:
app.UseMiddleware<T>()= 毛坯房app.UseGlobalException()= 精装修房
能住,但好看、规范、专业完全不同
三、拓展 最终标准代码(例)
1. 日志中间件扩展方法(新建文件)
MiddlewareExtensions.cs
using Microsoft.AspNetCore.Builder;
// 静态类
public static class MiddlewareExtensions
{
/// <summary>
/// 全局异常中间件
/// </summary>
public static IApplicationBuilder UseGlobalException(this IApplicationBuilder app)
{
return app.UseMiddleware<ExceptionMiddleware>();
}
/// <summary>
/// 请求日志中间件
/// </summary>
public static IApplicationBuilder UseRequestLog(this IApplicationBuilder app)
{
return app.UseMiddleware<LogMiddleware>();
}
}
2. Program.cs 调用(超级干净)
// 中间件顺序:日志 → 异常 → 其他
app.UseRequestLog(); // 日志
app.UseGlobalException(); // 异常
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
最终效果
干净、规范、专业、可维护、可扩展。