如何在控制器之外获得对ASP.NET Core SignalR集线器上下文的引用?

时间:2018-05-04 19:52:11

标签: c# asp.net-core asp.net-core-2.0 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核心版本中,我不能再使用GlobalHost或IConnectionManager来获取对集线器上下文的引用。我可以使用DI在控制器中获取对集线器上下文的引用而没有任何问题。

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

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

1 个答案:

答案 0 :(得分:1)

您可以在除contoller之外的任何类中注入IHubContext。请查看下面的代码段:

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

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