Я пытаюсь передать сообщение клиентам с рабочим сервисом в. net core 3.1. У меня нет Startup.cs (нет конечной точки et c.). У меня есть только Program.cs:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseWindowsService()
.ConfigureServices((hostContext, services) =>
{
//services.AddSignalR();
services.AddHostedService<Worker>();
});
}
И это рабочий (Worker.cs):
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
//private readonly IHubContext<OperatorHub, IMessage> _operatorHub;
public Worker(ILogger<Worker> logger/*, IHubContext<OperatorHub, IMessage> operatorHub*/)
{
_logger = logger;
//_operatorHub = operatorHub;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
//await _operatorHub.Clients.All.SendMessage("hello fucking world!");
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
await Task.Delay(1000, stoppingToken);
}
}
}
Из того, что я собрал из отдельной документации (но прямо сейчас нет документация по inte rnet об этом) Это интерфейс, который я создал (IMessage.cs):
public interface IMessage
{
Task SendMessage(string message);
}
А это класс концентратора (OperatorHub.cs):
public class OperatorHub : Hub<IMessage>
{
public async Task BroadcastMessage(string message)
{
await Clients.All.SendMessage(message);
}
}
Когда я запускаю, я получаю исключение из-за строки services.AddSignalR();
в Program.cs. Я попытался добавить что-то вроде services.AddSingleton<OperatorHub>()
в ConfigureServices, но тоже не повезло.
Небольшая помощь была бы очень признательна. Заранее спасибо.