关闭 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 错误