c# - 在我执行 ctrl+F5 之前,SignalR 在每隔一次页面刷新时中断

标签 c# asp.net .net signalr

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

errors

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/

相关文章:

javascript - 如果找到 Razor 处理程序,则调用 JS 函数

c# - 'System.TypeLoadException' 发生在 > Microsoft.AspNet.Mvc.Core.dll

c# - 如何检查我的程序是否已经在运行?

.net - 等待!哪个配置文件? ( Entity Framework 连接字符串)

c# - 如何在C#中将字符串转换为整数

c# - var di = new DirectoryInfo(path) 抛出异常,直到我第一次使用 Windows 资源管理器打开路径

c# - 是否可以从一个输入控制 2 个 DirectShowNet 流?

c# - 测试通用接口(interface)时出现奇怪的接口(interface)/TContext 错误

c# - 如何调试 Roslyn 编译生成的 dll?

c# - 使用 C# 将多行插入到 MS Sql Server