SignalR 运行良好,除了在其他所有页面加载时,我得到:
start和abort中的error是
无法识别的用户身份。在事件的 SignalR 连接期间,用户身份不能更改。
不过,此时,如果我按 ctrl+f5,效果很好。
我在 IIS 7.5 上,这意味着它没有使用网络套接字,如果这很重要的话。
最佳答案
是否有可能在 SignalR 的/negotiate 请求之后但在/start 请求之前完成的另一个请求正在设置一个正在更改用户的 IPrincipal
的 cookie?
SignalR 的/negotiate 请求返回一个“connectionToken”(除其他外)用作反 CSRF token 。每个后续 SignalR 请求都在查询字符串中包含 connectionToken,并且服务器会验证请求 connectionToken 的同一用户正在发出新请求。如果用户不同,SignalR 将响应 403。
正如 Marcel N. 所指出的,这也可能是由于用户 session 过期造成的,因为这实际上会导致用户注销。但是,我认为 session 不太可能在/negotiate 和/start 请求之间持续过期。
关于c# - 在我执行 ctrl+F5 之前,SignalR 在每隔一次页面刷新时中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25467187/