Microsoft.AspNetCore.Builder
是 ASP.NET Core 的**“中间件管道施工工具箱”——它提供 IApplicationBuilder 及一系列扩展方法(
UseStaticFiles()
、UseRouting()
、UseAuthentication()
等),让你按顺序**把中间件拼接成处理管道,最终形成
RequestDelegate
交给主机运行。一句话:
“负责‘注册→排序→生成’中间件,决定 HTTP 请求从进到出每一步由谁处理。”
1. 核心对象
表格
类型 | 作用 |
---|---|
IApplicationBuilder |
管道施工接口,支持 Use() 、Run() 、Map() |
WebApplication (.NET 6+) |
同时实现 IApplicationBuilder 和 IHost ,所以 app.UseXxx() 就是用它 |
2. 典型用法(最小 API 也逃不掉)
csharp
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build(); // ← 得到 IApplicationBuilderapp.UseStaticFiles(); // 1 静态文件
app.UseRouting(); // 2 路由
app.UseAuthentication();// 3 认证
app.UseAuthorization(); // 4 授权
app.MapGet("/", () => "Hi"); // 5 终结点
app.Run(); // ← 生成 RequestDelegate 并启动主机
顺序 = 执行顺序,不可随意颠倒(例如认证必须在授权之前)。
3. 扩展方法全家桶(都在 Microsoft.AspNetCore.Builder
名下)
csharp
UseStaticFiles() // 静态文件
UseRouting() // 路由
UseAuthentication() // 认证
UseAuthorization() // 授权
UseCors() // 跨域
UseResponseCaching() // 响应缓存
UseHttpLogging() // HTTP 日志
UseSerilogRequestLogging() // Serilog 请求日志
UseDeveloperExceptionPage() // 开发错误页
源码位置:
Microsoft.AspNetCore.*.Builder
子文件夹,统一以 IApplicationBuilder
扩展形式出现。4. 自定义中间件(也用它)
csharp
public static class MyMiddlewareExtensions
{public static IApplicationBuilder UseMyMiddleware(this IApplicationBuilder builder)=> builder.Use(next => new MyMiddleware(next).Invoke);
}
调用:
csharp
app.UseMyMiddleware(); // 链式拼装
5. 与 IServiceCollection
的关系
表格
阶段 | 接口 | 包 |
---|---|---|
注册服务 | IServiceCollection |
Microsoft.Extensions.DependencyInjection.Abstractions |
注册中间件 | IApplicationBuilder |
Microsoft.AspNetCore.Builder |
流程:先服务 → 后管道
csharp
builder.Services.AddSingleton<IMyService, MyService>(); // DI
var app = builder.Build();
app.UseMiddleware<MyMiddleware>(); // 管道
✅ 一句话总结
Microsoft.AspNetCore.Builder
就是:“提供 IApplicationBuilder 和全套扩展方法,让你按顺序把中间件拼成 HTTP 处理管道——请求从进到出每一步由谁处理,全由它决定。”