Blazor服务器中间件中的AsyncLocal Serilog LogContext



我创建了一个自定义中间件,将关于HttpContext的信息推送到我的Serilog LogContext:中

if (context == null) throw new ArgumentNullException(nameof(context));
string profile = context.Request.Host.Host;
string ipAddress = context.Connection.RemoteIpAddress?.ToString();
string userAgent = context.Request.Headers["User-Agent"].ToString();
using (LogContext.PushProperty("Profile", profile))
using (LogContext.PushProperty("IpAddress", ipAddress))
using (LogContext.PushProperty("UserAgent", userAgent))
{
await _next(context);
}

我想了解LogContext属性在各种查询(Hhtp请求(中的行为。

来自Microsoft文档:

AsyncLocal表示给定异步控制流(如异步方法(的本地环境数据。

Blazor服务器中间件中的异步控制流是什么?

我的异步控制流是什么

AsyncLocal<T>值在整个await _next(context)中持续存在;即直到_next完成。在所有现代中间件系统中,这都是当前中间件之后的所有中间件。

相关内容

  • 没有找到相关文章

最新更新