关闭 websocket 时出现 SignalR 错误 - 句柄无效

Posted

技术标签:

【中文标题】关闭 websocket 时出现 SignalR 错误 - 句柄无效【英文标题】:SignalR Error while closing the websocket - Invalid Handle 【发布时间】:2014-01-30 18:30:25 【问题描述】:

出现此 SignalR 问题:

关闭 websocket 时出错: System.Net.WebSockets.WebSocketException (0x80070006):句柄是 无效

我认为问题与这段代码有关:

var currentHub = GlobalHost.ConnectionManager.GetHubContext<HubManager>();
currentHub.Groups.Remove(userConnectionId, roomName);

如何解决?

【问题讨论】:

我偶尔会在我的“单元”测试中看到这些(我没有完全关闭连接)。 【参考方案1】:

我遇到了同样的问题,当我将 SQL 背板添加到 signalR 时,这开始发生,

这与中心上下文的“新鲜度”有关,我所做的是:

    /// <summary>
    /// In case a backplane  is used (in case of load balancer) , the instance should always be taken fresh
    /// if no backplane is used no need to refresh the instance on each invocation
    public class HubContextService 
    
        bool BackplaneUsed  get; set; 
        IHubContext _context = null;

        public  HubContextService(bool isBackPlaneUsed = true)
        
            BackplaneUsed = isBackPlaneUsed;
        

        public IHubContext HubContext
         
            get
            
                if (BackplaneUsed)
                
                    return GlobalHost.ConnectionManager.GetHubContext<HubManager>();
                
                else
                
                    if (_context == null)
                    
                        _context = GlobalHost.ConnectionManager.GetHubContext<HubManager>(); 
                    
                    return _context;
                
            
            set 
            
                _context = value;
            
        
    

【讨论】:

以上是关于关闭 websocket 时出现 SignalR 错误 - 句柄无效的主要内容,如果未能解决你的问题,请参考以下文章

从 Web API 控制器调用 SignalR 集线器时出现问题

在角度应用程序中使用 SignalR Core 时出现 CORS 错误

WebSocket 连接到“wss://”失败:意外响应代码:500

SignalR全套系列之在.Net Core 中实现长轮询

通过 WebSockets 同步对象时出现问题?

SignalR全套系列之在.Net6中实SignalR通信