SignalR: класс Access Hub из другого проекта - PullRequest
0 голосов
/ 17 сентября 2018

Я занимаюсь разработкой .Net Core веб-приложения и хочу получить доступ к IHubContext вне класса контроллера, но я не могу ссылаться на класс NotificationHub.

Вот моя структура решения с некоторымиотметки (красные цифры): Структура решения

Если я пытаюсь ссылаться на класс NotificationHub из проекта Service, он всегда подчеркивает класс NotificationHub, а Visual Studio предлагает следующие предложения: Предложения

NotificationHub.cs (в проекте 1)

public class NotificationHub : Hub
{
    public string GetConnectionId()
    {
        return Context.ConnectionId;
    }

    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync("ReceiveNotification", user, message);
    }

    public Task SendPrivateMessage(string user, string message)
    {
        return Clients.User(user).SendAsync("ReceiveNotification", message);
    }
}

... Service.cs (в проекте 2)

private readonly IHubContext<NotificationHub> _hubContext; // it uderlines "NotificationHub"

public PDUSwitchService(ILogger<PDUSwitchService> logger, IHubContext<NotificationHub> hubContext)
{
    _logger = logger;
    _hubContext = hubContext;
}

Как я могу получить доступ к классу NotificationHub (в проекте 1) из сервисного проекта (в проекте 2)?

1 Ответ

0 голосов
/ 17 сентября 2018

Вы должны переместить свой класс-концентратор в отдельный проект, в противном случае у вас круговая зависимость (веб-проект зависит от службы, а служба зависит от сети).После перемещения веб-проект будет ссылаться на проекты Hub и Service, а Service - на проект Hub, поэтому проблема должна быть решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...