我的 .NET Core Web 应用程序中有以下界面:
public interface IIntegrationManagerService : IHostedService
{
Task<List<IFunciones>> GetFunctionList();
}
实现如下:
public class IntegrationManagerService : IIntegrationManagerService, IDisposable
我以这种方式添加到 Program.cs 中:
services.AddHostedService<IIntegrationManagerService>();
这样做时,构建服务时会抛出异常。
如果我用这个更改上面的行:
services.AddHostedService<IntegrationManagerService>();
服务构建完成,但是实例化要注入对象的类时抛出异常。
如果我注入
IHostedService
不会引发异常,但我无法使用 IIntegrationManagerService
方法。
我该怎么做?
我尝试添加单例,但是
Start
服务的方法显然没有被调用。
您是否尝试从控制器引用您的托管服务?如果我记得的话,托管服务会添加到具有范围生命周期的 DI 容器中。如果将 IServiceProvider 注入到控制器中,则可以从 IServiceProvider 中提取它们:
var scope = serviceProvider.CreateScope();
var service = scope.ServiceProvider.GetRequiredService<IIntegrationManagerService>();
如果这不起作用,您可以将托管服务配置为响应控制器内引发的事件。这可能被认为是一种反模式,但会提供一个可行的、可重用的解决方案。
祝你好运!