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重新创建。如何路由hangfire以使用由ASP的默认DI管理的单例对象?
我正在ASP.net核心(2.2)应用程序中的基于内存的Hangfire(1.6.21)中使用。在Startup.cs中,我将服务配置为单例:services.AddSingleton
(); // ...