Внедрение зависимости синглтона в хабе SignalR - PullRequest
0 голосов
/ 06 марта 2019

Я использую Microsoft.AspNetCore.SignalR (1.1.0)

У меня есть некоторые услуги в startup.cs:

services.AddSingleton<IHostedService, MySingletonService>();
services.AddScoped<MyScopedService >();

Теперь я хочу использовать этот сервис в своем хабе, поэтому я внедряю его:

private readonly MyScopedService _cs;
private readonly MySingletonService _ss;
public MyHub(MyScopedService cs, MySingletonService ss)
{
    _cs = cs;
    _ss= ss;
}

Это работает только для сервисов с заданной областью, так как, как только сервис становится одноразовым, концентратор никогда не вызывается и не может подключиться в браузере. Почему это невозможно? Я просто хочу, чтобы существующий экземпляр службы Singleton вызвал метод, а затем отпустил его снова.

1 Ответ

0 голосов
/ 06 марта 2019

Это не имеет ничего общего с SignalR. Так как я создал свой сервис как IHostedService, мне также нужно добавить его как IHostedService, что невозможно, потому что у меня есть несколько IHostedServices, и я хочу только этот конкретный. Решение заключается в том, чтобы ввести как обычный синглтон, а затем запустить его.

services.AddSingleton<MySingletonService>();

//Start the background services
services.AddHostedService<BackgroundServiceStarter<MySingletonService>>();

Я нашел решение здесь: https://stackoverflow.com/a/51314147/1560347

...