在 startup.cs
中,我使用以下代码:
services.AddHostedService<TimedHealthCheckService>();
TimedHealthCheckService显然实现了IHostedService接口:
public class TimedHealthCheckService : IHostedService, IDisposable
在我的控制器中,我有以下构造函数:
public HealthCheckController(ILogger<HealthCheckController> logger, IHostedService hostedService)
{
this.logger = logger;
this.timedHealthCheckService = hostedService as TimedHealthCheckService;
}
然而,当我启动我的WebAPI时,timedHealthCheckService
总是为空。似乎另一个 IHostedService 在构造函数中被注入了进来。通过检查 hostedService,它实际上是 GenericWebHostService 类型的一个对象。
如果我将控制器的构造函数改为:
public HealthCheckController(ILogger<HealthCheckController> logger, TimedHealthCheckService hostedService)
我遇到了以下错误:
无法解析服务类型 'HealthCheck.Web.TimedHealthCheckService',尝试激活 'HealthCheck.Web.Controllers.HealthCheckController' 时发生错误。
我还尝试过 services.AddSingleton<IHostedService, TimedHealthCheckService>();
但结果相同。