首页 > 解决方案 > .NET Core 托管服务

问题描述

我需要获得注册托管服务的参考:

services.AddHostedService<DataCollectingService>();

它实现了接口IHostedService,并在 Web 应用程序启动时正确启动。

我需要在某些控制器中获取服务的引用并访问对象公共成员。

以下代码不起作用。xService一片空白。

public IActionResult T()
{
    using (var serviceScope = _serviceProvider.GetRequiredService<IServiceScopeFactory>().CreateScope())
    {
        var xService = serviceScope.ServiceProvider.GetService<DataCollectingService>();

    }
    return RedirectToAction(nameof(Index));
}

标签: c#asp.net-coreasp.net-core-hosted-services

解决方案


gunr2171在原始问题的第 3 条评论中给出了适用于 .Net Core 3.1+ 的答案:

IEnumerable<IHostedService> allHostedServices = this.serviceProvider.GetService<IEnumerable<IHostedService>>();

将返回对托管服务现有实例的引用。


推荐阅读