1

我正在使用 SignalR,但遇到了问题。当在一个浏览器窗口中启动连接,然后用户在另一个浏览器窗口中登录时,用户身份会更改(这会导致错误“System.InvalidOperationException:无法识别的用户身份。在活动 SignalR 连接期间用户身份无法更改”在集线器上调用方法时的服务器。

我在客户端上使用此代码:

proxy.server.analyze(content)
.done(function () {
    console.log('Success!');
})
.always(function () {
    console.log('This is always called!');
})
.fail(function (error) {
    console.log('This is never called!');
});

当我在服务器上看到错误时,永远不会调用失败函数,因此客户端似乎无法处理此问题并停止和启动连接。

那么是否有处理这种情况的“最佳实践”方式?如何在客户端上检测到另一个浏览器窗口中的用户身份已更改并停止并重新启动连接?

4

1 回答 1

1

这是一个已知的问题。

它在下一个版本中得到修复。这是最终也解决了您的问题的问题:https ://github.com/SignalR/SignalR/issues/2106 。

最后,在下一个版本(0.2.0)中,连接会抛出错误并自行停止。因此,您将能够通过错误处理程序来处理您的案例,或者您当然可以绑定到“断开连接”事件。

如果您愿意尝试预发布,您可以随时从官方来源或 webstack nightly ( http://www.myget.org/F/aspnetwebstacknightly/ )中提取

于 2013-08-23T08:48:07.920 回答