首页 > 解决方案 > 如何获取对控制器外部 ASP.NET Core SignalR 集线器上下文的引用?

问题描述

我刚刚开始使用 SignalR for ASP.NET Core。我已经使用 SignalR for ASP.NET 几年了。

我在用:

Microsoft.AspNetCore.All 2.0.7
Microsoft.AspNetCore.SignalR 1.0.0-preview2-final
Microsoft.AspNetCore.SignalR.Client 1.0.0-preview2-final

看来,在 SignalR 的 ASP.NET Core 版本中,我不能再使用 GlobalHost 或 IConnectionManager 来获取对集线器上下文的引用。我可以使用 DI 在控制器中获取对集线器上下文的引用,而不会出现任何问题。

public BroadcastController(IHubContext<NotificationHub> hubContext)
{
_hubContext = hubContext;
}

但我需要知道如何在控制器之外进行操作。

标签: c#asp.net-coreasp.net-core-2.0asp.net-core-signalr

解决方案


您可以在除控制器之外的任何类中注入 IHubContext。检查下面的代码片段:

 public class NotificationListnerExtension : INotificationListnerExtension
    {
        private readonly IHubContext<Notification> _notificationHubContext; 

        public NotificationListnerExtension(
            IHubContext<Notification> notificationHubContext)
        {
            _notificationHubContext = notificationHubContext;                
        }
}

推荐阅读