中间件与管道
中间件管道模型、Use/Run/Map、异常处理中间件、CORS
中间件与管道
每个 HTTP 请求在 ASP.NET Core 中穿过一个中间件管道——日志、认证、CORS 都是中间件。
学完本章你将: 掌握中间件管道模型、Use/Run/Map、异常处理中间件。
中间件管道
csharp
var app = builder.Build();
// 中间件按注册顺序执行(管道模型)
app.Use(async (context, next) =>
{
Console.WriteLine("请求进入");
await next(context); // 调用下一个中间件
Console.WriteLine("响应返回");
});
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();
自定义中间件
csharp
// 请求耗时日志中间件
app.Use(async (context, next) =>
{
var sw = Stopwatch.StartNew();
await next(context);
sw.Stop();
Console.WriteLine($"{context.Request.Path} → {sw.ElapsedMilliseconds}ms");
});
// 全局异常处理中间件
app.Use(async (context, next) =>
{
try { await next(context); }
catch (Exception ex)
{
context.Response.StatusCode = 500;
await context.Response.WriteAsJsonAsync(new {
error = ex.Message
});
}
});
Use / Run / Map
csharp
app.Use(...); // 执行后调用下一个中间件
app.Run(...); // 终端中间件——不调用下一个
app.Map("/api", api => { // 条件分支
api.UseRouting();
});