【问题标题】:SignalR fails to reconnect with this error The ConnectionId is in the incorrect formatSignalR 无法重新连接并出现此错误 ConnectionId 格式不正确
【发布时间】:2018-02-13 20:52:29
【问题描述】:

我使用docs 在 ASP.NET MVC 和 SignalR 中制作了一个简单的聊天应用程序。

使用 fiddler,我看到 SignalR connects 成功,然后成功发送几个请求几秒钟到这个路径:

https://myaddress.com/signalr/poll?transport=longPolling&clientProtocol=1.5 //剩下的

最后一次成功的post 响应时间稍长:

{"C":"d-223DA124-B,6|C,0|D,3|E,1","T":1,"M":[]}

然后 SignalR 向该地址发送重复的 reconnect 请求,但失败:

https://myaddress.com/signalr/reconnect?transport=longPolling&clientProtocol=1.5& // 其余的

回复如下:

ConnectionId 的格式不正确。

可能有什么问题以及如何解决?我的服务器上是否有问题可能会阻止这些请求?谢谢。

【问题讨论】:

    标签: c# asp.net-mvc signalr


    【解决方案1】:

    响应中的"T": 1 表示服务器告诉客户端尝试重新连接。如果服务器正在关闭,则服务器发送"T": 1。我认为在服务器重新启动后它会丢失状态并且不能再将连接 Id 与用户关联。

    【讨论】:

    • 谢谢@Pawel。那么为什么它会发生在服务器上呢?我在服务器上没有特殊代码,只需覆盖 OnConnected OnDisconnected OnReconnected 方法,并将新用户保存到外部存储。这些方法中的exception 会导致服务器关闭吗?
    • 可能是因为我的 MVC 应用在主机上?
    • 您需要确定服务器是否正在关闭。 (当HostShutdownToken 被取消时,T 设置为 1 - 所以看起来服务器正在关闭)。然后你需要找出原因。
    • 抱歉,服务器是指我的整个 ASP.NET MVC 网站,还是只是 SignalR Hub?
    • 整个网站 - 可能包括 appdomain 回收(或整个服务器 - 即您停止 IIS)
    【解决方案2】:

    如果您正在登录用户进行聊天,他们可能会在上次发帖期间在某处注销,您可能会收到此错误。检查signalr The connection id is in the incorrect format

    【讨论】:

    • 不,我没有为 SignalR 实现任何身份验证
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多