我有控制器、后台任务和丰富器来丰富 HttpContext 的一些属性(例如 userAgent 标头)。我正在使用 .net6、Serilog 3.1.1 并通过 ILogger 界面进行日志记录。
[HttpGet, Route("User/{id:int}")]
public async Task<IActionResult> GetUserById(int id)
{
var user = await _repository.GetUser(id);
SomeBackgroundTask(user);
_logger.LogInformation("Something happened 1."); // There is UserAgent in log
return Ok(user);
}
public async Task SomeBackgroundTask(User user)
{
try
{
await Task.Delay(10000);
}
catch (Exception e)
{
_logger.LogError(e, "Something happened 2."); // There is not UserAgent in log
}
}
因此,当请求完成时,丰富器无法使用
_contextAccessor.HttpContext
来获取必要的请求标头。
我需要在哪里以及如何保存所需的属性,以便将它们记录在后台任务中?