Ведение журнала Hangfire для анализа приложений из задания, поставленного в очередь с контроллера

#c# #asp.net-core #hangfire

#c# #asp.net-core #hangfire

Вопрос:

Когда я ставлю в очередь задание с контроллера с помощью Hangfire, телеметрия не коррелируется в Application Insights:

 public IActionResult Foo()
{
    _backgroundJobClient.Enqueue<IFooService>(x => x.StartJob());
    
    return StatusCode((int) HttpStatusCode.Accepted);
}
 

Для сравнения, журналы с этого контроллера будут иметь тот же operationId :

 public IActionResult Hello()
{
    _logger.LogInformation("Hello.");
    _logger.LogInformation("Hello 2.");
    return Ok();
}
 

Кроме того, журналы из размещенной службы (рабочие нагрузки, отличные от HTTP) будут сопоставлены при создании операции вручную:

 public class MyHostedService : IHostedService, IDisposable
{
    public MyHostedService(ILogger<MyHostedService> logger)
    {
        _logger = logger;
    }
    
    public Task StartAsync(CancellationToken stoppingToken)
    {
        using var operationHolder = _telemetryClient.StartOperation<RequestTelemetry>("MyHostedService");

        _logger.LogInformation("Running.");

        ...
    }
}
 

Как сделать так, чтобы журналы в Application Insights были одинаковыми operationId , когда задание ставится в очередь с контроллера?