【问题标题】:Signalr reconnects forever after IIS AppPool recyclesIIS AppPool 回收后 Signalr 永远重新连接
【发布时间】:2018-01-25 15:02:24
【问题描述】:

我正在使用 signalR 2.2.1。 当 IIS 应用程序池回收时,如果有打开的连接,客户端会永远尝试重新连接(使用相同的 ConnectionId)。

SignalR 客户端日志示例(针对每次重新连接尝试):

SignalR:webSockets 重新连接。

SignalR:连接到 websocket 端点 “WSS:// IP /集线器/ signalr /重新连接运输=的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%2FVuIzdJQVbUypK1YjrZur80uPbufYxGT%2BDC%2FWhsHXZJgUpkI2IyJ8Y8wnuOEAID%2F9kOnSyllFpCQHDN6VRTdMEaU%2F0Kdh4yX2vqKh%2F&connectionData =%5B%7B%22name%22%3A%22hub%22%7D%5D&tid=0'。

SignalR:关闭 Websocket。

SignalR:Websocket 已打开。

SignalR:从 websocket 断开连接不干净:[未给出原因]。

我做了一个解决方法 - 当重新连接回调被调用时 - 停止和启动连接(只是启动不起作用):

    $.connection.hub.reconnected(function() {
        console.log("reconnected");
        $.connection.hub.stop();
        $.connection.hub.start();
    });

但是我正在处理重新连接,我想这不是一个好主意。

还有其他想法吗?

【问题讨论】:

  • 您的网站是否经过身份验证?如果是这样,您可能需要固定您的机器密钥
  • @thab 它是 Web 应用程序(子级)下 WCF 服务(IIS Web 应用程序)的一部分,Web 应用程序经过身份验证并具有有效的机器密钥,服务不是,但它获得来自父母的认证。这也能提出这个问题吗?
  • 那么你有一个固定的机器密钥,是吗? (ASP.NET 的默认设置是在每次重新启动应用程序时重新生成一个新的)。所有身份验证都将被丢弃,因为 cookie 是使用现在无效的机器密钥签名的。
  • 是的,我做到了。它仍然会发生。
  • 回收后需要重新登录吗?基本上这应该可以正常工作...您是否覆盖集线器的服务器端 onReconnect?

标签: javascript c# signalr signalr-hub signalr.client


【解决方案1】:

在上面的 cmets 中进行了一系列的诊断尝试后:

尝试在 Hub 中注释掉 OnReconnect 方法。作为一般规则,我不建议覆盖 onReconnect - 您需要它的真正原因很少,我能想到的唯一原因可能是重新连接的服务器端日志记录。

在 Signalr 连接的生命周期中,重新连接通常发生在 SignalR 恢复且没有任何消息丢失时 - 在这种情况下,您实际上不需要执行任何操作。还有一些其他情况可能会发生重新连接并且您需要某种恢复,但它们大多是我不推荐的 SignalR 架构(两个节点共享相同的 URL 和机器密钥,但在不同的背板上)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2010-09-16
    • 2013-04-11
    • 2017-05-26
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多