【发布时间】:2014-08-28 06:43:49
【问题描述】:
SignalR 运行良好,除了在所有其他页面加载时,我得到:
启动和中止的错误是
无法识别的用户身份。在有效的 SignalR 连接期间,用户身份无法更改。
不过,此时,如果我执行 ctrl+f5,效果会很好。
我使用的是 IIS 7.5,这意味着它没有使用 Web 套接字,如果这很重要的话。
【问题讨论】:
-
我也遇到了同样的问题,你找到解决办法了吗?
SignalR 运行良好,除了在所有其他页面加载时,我得到:
启动和中止的错误是
无法识别的用户身份。在有效的 SignalR 连接期间,用户身份无法更改。
不过,此时,如果我执行 ctrl+f5,效果会很好。
我使用的是 IIS 7.5,这意味着它没有使用 Web 套接字,如果这很重要的话。
【问题讨论】:
是否有可能在 SignalR 的 /negotiate 请求之后但在 /start 请求之前完成的另一个请求正在设置一个正在更改用户 IPrincipal 的 cookie?
SignalR 的 /negotiate 请求返回一个“connectionToken”(除其他外),用作反 CSRF 令牌。每个后续 SignalR 请求都在查询字符串中包含 connectionToken,并且服务器会验证请求 connectionToken 的同一用户是否正在发出新请求。如果用户不同,SignalR 会以 403 响应。
正如 Marcel N. 所指出的,这也可能是由用户的会话到期引起的,因为这实际上会导致用户注销。但是,我认为会话在 /negotiate 和 /start 请求之间持续过期的可能性很小。
【讨论】: