在asp.net核心c#中使用hangfire时,多次构造了Singleton服务>> [

问题描述 投票:1回答:1
我正在ASP.net核心(2.2)应用程序中的基于内存的Hangfire(1.6.21)中使用。在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

(); // ...

c# asp.net-core hangfire
1个回答
0
投票
您可以创建一个使用IoC来解决依赖关系的JobActivator,因此它将始终使用单例类。
© www.soinside.com 2019 - 2024. All rights reserved.