.NET Core Хостинг Сервис - PullRequest
0 голосов
/ 10 июня 2019

Мне нужно получить ссылку на зарегистрированный размещенный сервис:

services.AddHostedService<DataCollectingService>();

Он реализует интерфейс IHostedService и правильно запускается при запуске веб-приложения.

Мне нужно получить ссылкуслужбы в некотором контроллере и открытых членах объекта доступа.

Следующий код не работает.xService равно нулю.

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

    }
    return RedirectToAction(nameof(Index));
}

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Я бы переместил всю функциональность в синглтон, затем при запуске я бы сделал что-то вроде

services.AddSingleton<DataCollectingService>();
services.AddHostedService<HostedServiceUsingTheDataCollectionService>();

Тогда я мог бы ввести Singleton в контроллеры.

Я не уверен, что Core будет обрабатывать ту же ссылку (я думаю, что в ядре 3 будет дело, не очень уверенно для <= 2.2), но я бы попробовал. </p>

0 голосов
/ 10 июня 2019

Я временно обработал это, статически сохраняя ссылку в классе, который устанавливается при запуске.

...