全书目录

第十五篇:ASP.NET Core 完全指南 —— 国家级综合服务枢纽宇宙

第三章:Middleware —— 请求必经的安检与通道

1 分钟 248 字 第 292 / 962 个阅读单元

中间件(Middleware)是 ASP.NET Core 的核心骨架。你可以把它理解成:请求进入枢纽后,必须依次经过的一道道通道。

每个中间件都可以做三件事:

  1. 在请求到达下一个环节前做事。
  2. 决定要不要放行给下一个环节。
  3. 在后面的环节执行完后,再回来补充处理响应。
csharp
app.Use(async (context, next) =>
{
    var startedAt = DateTime.UtcNow;
    Console.WriteLine($"[{startedAt:O}] 请求进入: {context.Request.Path}");

    await next();

    var endedAt = DateTime.UtcNow;
    Console.WriteLine($"[{endedAt:O}] 响应返回: {context.Response.StatusCode}");
});

这里的 await next() 很关键,它相当于:

text
“当前通道处理完了,放行到下一道通道;后面办完,再回到我这里。”
#中间件执行流程图
text
[请求进入]
    |
    v
[中间件 A 前置逻辑]
    |
    v
[中间件 B 前置逻辑]
    |
    v
[窗口办理 Endpoint]
    |
    v
[中间件 B 后置逻辑]
    |
    v
[中间件 A 后置逻辑]
    |
    v
[响应离开]
#中间件顺序为什么重要

因为它们不是“功能列表”,而是“通道顺序”。

text
正确思路:
异常保护 -> 静态文件 -> 认证 -> 授权 -> 路由窗口 -> 返回响应

错误思路:
先授权,再认证
先业务窗口,再异常保护
把静态文件放在最后

在国家级枢纽里,安检口、身份核验口、办事窗口,顺序乱了,整个秩序就乱了。