【发布时间】:2020-08-03 07:52:45
【问题描述】:
我的目标是编写一个中间件,负责记录对我的 API 的请求以及 API 对数据库中这些请求的响应。 我已经制作了一个以类似方式处理异常的中间件,但我对此感到困惑。 当您阅读有关中间件的 MSDN 时,您会看到这张漂亮的图片:
这使您认为中间件 2 接收请求,对其进行某些操作并将其传递给中间件 3,然后一旦中间件 3 完成所有处理,它会将控制权传递回中间件 2 以进行额外处理。
我唯一不明白的是,如果 Middleware 2 Invoke() 方法在请求期间只调用一次而不在响应期间调用,如何记录响应?
Startup.cs:
app.UseMiddleware<RequestLoggingMiddleware>();
中间件:
public class RequestLoggingMiddleware
{
private readonly RequestDelegate nextMiddleware;
public RequestLoggingMiddleware(RequestDelegate nextMiddleware)
{
this.nextMiddleware = nextMiddleware;
this.options = options;
}
public async Task Invoke(HttpContext context)
{
System.Diagnostics.Debug.WriteLine("Middleware runs");
await nextMiddleware(context);
}
}
}
在上面的示例中,我只在控制台中看到“中间件运行”一次,在初始请求期间但在做出响应之前。如何让它在响应周期中运行?
【问题讨论】:
标签: asp.net-core middleware asp.net-core-middleware