小编use*_*632的帖子

ASP.NET Core AddHostedService 和 AddSingleton 关系

我一起使用 AddSingleton 和 AddHostedService 在后端有一个长时间运行的服务(BackgroundService),同时控制器访问相同的服务来获取数据。这是我发现的:

  1. 如果同时使用 AddSingleton 和 AddHostedService,BackgroundService 将被初始化两次(不是 Singleton)。控制器只能访问在 AddSingleton 中创建的控制器。

调试输出(构造函数调用两次,查看秒数差异)

BGService 构造函数服务 addGame:游戏计数为 1 BGService 构造函数服务 addGame:游戏计数为 1 ExecuteAsync 1 :游戏计数为 1:[ "CONSTRUCTOR GAME AT 10/29/2021 10:37:25 AM(0)" ] ... ... ExecuteAsync 7 :游戏计数为 1:[ "CONSTRUCTOR GAME AT 10/29/2021 10:37:25 AM(0)" ] service addGame:games count is 2 After AddGame: [
"CONSTRUCTOR GAME AT 10/29 /2021 10:37:24 AM(0)", "游戏 0(1)"]

  1. 如果只使用 AddSingleton,它就可以工作。

  2. 如果仅使用 AddHostedService,则后台服务正在运行,但 DI 无法在控制器中工作(异常)。

**> 失败:

Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware 1 执行请求时发生未处理的异常。System.InvalidOperationException:尝试激活“CoreServiceSignalRSample.Controllers.WeatherForecastController”时无法解析类型“CoreServiceSignalRSample.service.IBGService”的服务。
在 Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp,类型 type,Type …

.net service dependency-injection

2
推荐指数
1
解决办法
3329
查看次数

标签 统计

.net ×1

dependency-injection ×1

service ×1