Сервис Singleton создавался несколько раз при использовании hangfire в ядре asp.net c # - PullRequest
0 голосов
/ 19 февраля 2019

Я использую в памяти Hangfire (1.6.21) в приложении ASP.net core (2.2).В Startup.cs я настраиваю сервис как одиночный:

services.AddSingleton<IXXXService, XXXService>(); // In ConfigureServices(...)

, а также запускаю Hangfire с помощью следующих строк:

app.UseHangfireServer(); // In Configure(...)

Вот упрощенный код XXXService:

public class XXXService : IXXXService
{
    public ExternalAPIService()
    {
        Console.WriteLine("xxx");
    }

    public void QueueRequest(Guid requestId)
    {
        BackgroundJob.Enqueue(() => this.AnalyzeRequest(requestId));
    }

    public async Task AnalyzeRequest(Guid requestId)
    {
        Console.WriteLine("Analyzing request...");
    }
}

Проблема в том, что, хотя XXXService определен как одиночный - и он действительно создается только один раз посредством последовательных запросов, он воссоздается при пожаре при конечном вызове AnalyzeRequest.Как я могу направить hangfire, чтобы использовать одноэлементный объект, управляемый по умолчанию DI ASP?

...