通过中间件链传递数据
从文档 :
该 HttpContext.Items 集合是存储在处理特定请求时,才需要数据的最佳位置。每次请求后都会丢弃其内容。它最好用作在请求期间在不同时间点操作的组件或中间件之间进行通信的手段,并且彼此之间没有直接关系来传递参数或返回值。
HttpContext.Items
是 IDictionary<object, object>
类型的简单字典集合。这个系列是
- 从
HttpRequest
开始提供 - 并在每个请求结束时被丢弃。
你可以通过简单地为键控条目分配值或通过请求给定键的值来访问它。
例如,一些简单的中间件可以向 Items 集合添加一些东西:
app.Use(async (context, next) =>
{
// perform some verification
context.Items["isVerified"] = true;
await next.Invoke();
});
后来在管道中,另一块中间件可以访问它:
app.Run(async (context) =>
{
await context.Response.WriteAsync("Verified request? " + context.Items["isVerified"]);
});