写入自定义 ASP.NET Core 中间件Write custom ASP.NET Core middleware

中间件是一种装配到应用管道以处理请求和响应的软件。ASP.NET Core 提供了一组丰富的内置中间件组件,但在某些情况下,你可能需要写入自定义中间件。

通常,中间件封装在类中,并且通过扩展方法公开。请考虑以下中间件,该中间件通过查询字符串设置当前请求的区域性:

以上示例代码用于演示创建中间件组件。有关 ASP.NET Core 的内置本地化支持,请参阅 ASP.NET Core 全球化和本地化

以下代码将中间件委托移动到类:

必须包括中间件类:

  • 具有类型为 的参数的公共构造函数。
  • 名为 InvokeInvokeAsync 的公共方法。此方法必须:
    • 返回 。

构造函数和 Invoke/InvokeAsync 的其他参数由依赖关系注入 (DI) 填充。

中间件组件可通过构造函数参数从 解析其依赖项。UseMiddleware<T> 也可直接接受其他参数。

由于中间件是在应用启动时构造的,而不是按请求构造的,因此在每个请求过程中,中间件构造函数使用的范围内 生存期服务不与其他依赖关系注入类型共享。如果必须在中间件和其他类型之间共享范围内 服务,请将这些服务添加到 方法的签名。Invoke 方法可接受由 DI 填充的其他参数:

以下扩展方法通过 公开中间件: