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завершает. Во всех современных системах промежуточного программного обеспечения это все промежуточное программное обеспечение, следующее за текущим.

Другие вопросы по тегам