Asp.net web api 触发多个OnDisconnect呼叫且连接也未断开的信号器

Asp.net web api 触发多个OnDisconnect呼叫且连接也未断开的信号器,asp.net-web-api,websocket,signalr,Asp.net Web Api,Websocket,Signalr,我们有一个扩展(2个实例)的Azure Cloud部署的基于asp.net Web API的SignalR hub服务器,它充当设备及其移动用户的中间人。几乎是一个聊天场景 我们看到,多个OnDisconnected调用某些连接,尽管这些连接是活动的。基本上,虽然服务器看到一个连接在其自身上触发了多个OnDisconnected调用,但客户端仍然能够进行调用,并且它继续使用具有相同signalr connectionID的同一个连接 就好像客户端对服务器上调用的OnDisconnected没有影

我们有一个扩展(2个实例)的Azure Cloud部署的基于asp.net Web API的SignalR hub服务器,它充当设备及其移动用户的中间人。几乎是一个聊天场景

我们看到,多个OnDisconnected调用某些连接,尽管这些连接是活动的。基本上,虽然服务器看到一个连接在其自身上触发了多个OnDisconnected调用,但客户端仍然能够进行调用,并且它继续使用具有相同signalr connectionID的同一个连接

就好像客户端对服务器上调用的OnDisconnected没有影响一样。 客户端使用WebSocket

我们在Disconnected(基本上是跟踪连接)中执行一些操作,正因为如此,这些操作变得混乱。我们的代码封装在try/catch块中,让base.OnDisconnected运行。 查看了信号机代码,但不明白这是怎么可能的

任何帮助都将不胜感激。
我们正在使用:信号器2.2.2。您是否使用某种形式的背板来管理您的状态?如果是这样,则表明您的连接ID未在请求之间同步。即使连接速度慢且无响应但未断开连接,onDisconnect也会触发,这取决于您使用的超时值。还有一些情况下,您将断开连接,而onDisconnect从未被触发,onDisconnected在大多数情况下都是最佳情况。如果您需要基于断开连接进行一些工作,那么最好使用轮询策略来确定用户是否仍然连接。

我们使用Redis作为背板。但OnDisconnected不应该是一个保证一次性通话吗?我们也看到了光谱另一端的行为。即使设备已关闭电源,也不会断开连接。不符合信号器文档的要求。请参阅信号器的连接生命周期