Javascript IIS应用池回收后,信号器将永远重新连接

Javascript IIS应用池回收后,信号器将永远重新连接,javascript,c#,signalr,signalr-hub,signalr.client,Javascript,C#,Signalr,Signalr Hub,Signalr.client,我用的是信号器2.2.1。 当IIS应用池回收时,如果存在打开的连接,客户端将尝试永久重新连接(使用相同的ConnectionId) 信号器客户端日志的示例(对于每次重新连接尝试): 信号器:网箱正在重新连接 信号器:连接到websocket端点 'wss://IP/hub/signalr/reconnect?transport=webSockets&groupsToken=8FWHT%2FO774vZYA7IYz8%2F%2FX9zMLswzG98KhGbM83kK5xh%2BVVbqQPv1

我用的是信号器2.2.1。 当IIS应用池回收时,如果存在打开的连接,客户端将尝试永久重新连接(使用相同的ConnectionId)

信号器客户端日志的示例(对于每次重新连接尝试):

信号器:网箱正在重新连接

信号器:连接到websocket端点 'wss://IP/hub/signalr/reconnect?transport=webSockets&groupsToken=8FWHT%2FO774vZYA7IYz8%2F%2FX9zMLswzG98KhGbM83kK5xh%2BVVbqQPv1wQYQWvzTygSQHj9QsDyoHL1U8eQ1fV18QQQ%2FZqRewQEpU4rkRZRE0CE%2B2oDk9RQghCT%2BxlV0KFcl%2FUpuepwX0E5w4xhSScH%2BFkxFvL4vtPIpwYVzInIaW%2BICRWRHrNfjKm9RLiC3a%2F3jcYi1AUeFBJsDnY%2F9bZBrA%3D%3D&messageId=d-C69C65D6-H%2C0%7CI%2C0%7CJ%2C4%7CK%2C0%7CL%2C0%7CM%2C0&clientProtocol=1.5&connectionToken=%2FivgB%2Bcy%2FE1%2B%2BTFj5eCqTEZNzr%2FFUYPK1YJRZUR80UPBUYXGT%2BDC%2WHSHZJGUPKI2YJ8Y8WnuoEAID%2F9kOnSyllFpCQHDN6VRTdMEaU%2F0KDH4YX2VKH%2F&ConnectiondData=%5B%7B%7B%227B%22%22%22%22%2HUB%

信号员:关闭Websocket

信号员:Websocket已打开

信号器:与websocket的断开不干净:[未给出原因]

在调用重新连接的回调时,我做了一个变通方法来停止和启动连接(仅启动不起作用):

$.connection.hub.reconnected(函数(){
控制台日志(“重新连接”);
$.connection.hub.stop();
$.connection.hub.start();
});在上述注释中的一系列诊断尝试后:

尝试在中心中注释掉重新连接的
方法。一般来说,我不建议重写onReconnect
——您需要它的真正原因很少,我能想到的唯一原因可能是重新连接的服务器端日志记录


在信号器连接的生命周期中,当信号器恢复而不丢失任何消息时,通常会发生重新连接-在这种情况下,您实际上不需要做任何事情。在其他一些情况下,可能会发生重新连接,您需要某种恢复,但我不推荐它们主要是信号器架构(两个节点共享相同的URL和机器密钥,但位于不同的背板上)。

您的网站是否经过身份验证?如果需要,您可能需要锁定机器钥匙so@thab它是web应用程序(的子项)下的WCF服务(IIS web应用程序)的一部分,web应用程序经过身份验证并具有有效的机器密钥,而服务不是,但它从父项获得身份验证。这也会引起这个问题吗?那么你有固定的机器钥匙,是吗?(ASP.NET的默认设置是每次重新启动应用程序时重新生成一个新的应用程序)。所有身份验证都将被抛出,因为cookie是用现在无效的机器密钥签名的。是的,我这样做了。这种情况仍然存在。回收后您是否必须重新登录?基本上这应该很好。。。是否覆盖集线器的服务器端重新连接?