写入自定义 ASP.NET Core 中间件Write custom ASP.NET Core middleware
中间件是一种装配到应用管道以处理请求和响应的软件。ASP.NET Core 提供了一组丰富的内置中间件组件,但在某些情况下,你可能需要写入自定义中间件。
通常,中间件封装在类中,并且通过扩展方法公开。请考虑以下中间件,该中间件通过查询字符串设置当前请求的区域性:
以上示例代码用于演示创建中间件组件。有关 ASP.NET Core 的内置本地化支持,请参阅 ASP.NET Core 全球化和本地化。
以下代码将中间件委托移动到类:
必须包括中间件类:
- 具有类型为 的参数的公共构造函数。
- 名为
Invoke
或InvokeAsync
的公共方法。此方法必须:- 返回 。
构造函数和 Invoke
/InvokeAsync
的其他参数由依赖关系注入 (DI) 填充。
中间件组件可通过构造函数参数从 解析其依赖项。UseMiddleware<T> 也可直接接受其他参数。
由于中间件是在应用启动时构造的,而不是按请求构造的,因此在每个请求过程中,中间件构造函数使用的范围内 生存期服务不与其他依赖关系注入类型共享。如果必须在中间件和其他类型之间共享范围内 服务,请将这些服务添加到 方法的签名。Invoke
方法可接受由 DI 填充的其他参数:
以下扩展方法通过 公开中间件: