AsyncLocal Serilog LogContext в ПО промежуточного слоя Blazor Server
Я создаю собственное Middliware для отправки информации о 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).
Из документов Майкрософт:
AsyncLocal Представляет внешние данные, которые являются локальными для данного асинхронного потока управления, например асинхронного метода.
Каков мой асинхронный поток управления в Blazor Server Middleware?
1 ответ
Каков мой асинхронный поток управления
The AsyncLocal<T>
значения сохраняются на протяжении всегоawait _next(context)
; то есть, пока_next
завершает. Во всех современных системах промежуточного программного обеспечения это все промежуточное программное обеспечение, следующее за текущим.