Microsoft.AspNetCore.Builder

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();          // ← 得到 IApplicationBuilder

app.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 处理管道——请求从进到出每一步由谁处理,全由它决定。”
posted @ 2025-10-10 15:34  yinghualeihenmei  阅读(6)  评论(0)    收藏  举报