用户身份更改时未调用SignalR失败方法

时间:2013-08-23 07:18:37

标签: signalr

我正在使用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!');
});

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

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

1 个答案:

答案 0 :(得分:1)

这是一个已知问题。

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

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

如果您愿意尝试预发布,您可以随时从官方来源或网络堆栈中取出(http://www.myget.org/F/aspnetwebstacknightly/