【问题标题】:SignalR breaks on every other page refresh until I do a ctrl+F5SignalR 每隔一页刷新一次就会中断,直到我执行 ctrl+F5
【发布时间】:2014-08-28 06:43:49
【问题描述】:

SignalR 运行良好,除了在所有其他页面加载时,我得到:

启动和中止的错误是

无法识别的用户身份。在有效的 SignalR 连接期间,用户身份无法更改。

不过,此时,如果我执行 ctrl+f5,效果会很好。

我使用的是 IIS 7.5,这意味着它没有使用 Web 套接字,如果这很重要的话。

【问题讨论】:

标签: c# asp.net .net signalr


【解决方案1】:

是否有可能在 SignalR 的 /negotiate 请求之后但在 /start 请求之前完成的另一个请求正在设置一个正在更改用户 IPrincipal 的 cookie?

SignalR 的 /negotiate 请求返回一个“connectionToken”(除其他外),用作反 CSRF 令牌。每个后续 SignalR 请求都在查询字符串中包含 connectionToken,并且服务器会验证请求 connectionToken 的同一用户是否正在发出新请求。如果用户不同,SignalR 会以 403 响应。

正如 Marcel N. 所指出的,这也可能是由用户的会话到期引起的,因为这实际上会导致用户注销。但是,我认为会话在 /negotiate 和 /start 请求之间持续过期的可能性很小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 2022-11-19
    相关资源
    最近更新 更多