具有 AJAX 和 SignalR 的 MVC 5 应用程序在 Chrome 中挂起

MVC 5 application with AJAX and SignalR hangs in Chrome

我有一个使用 AJAX 调用和 SignalR 的 MVC 5 应用程序。当执行以下操作顺序时,应用程序挂起 Chrome:

  1. 用户访问页面 A,页面加载后控制台如下所示

    SignalR: serverSentEvents transport starting.
    SignalR: Attempting to connect to SSE endpoint
    SignalR: EventSource connected.
    SignalR: serverSentEvents transport connected. Initiating start request.
    SignalR: The start request succeeded. Transitioning to the connected state.
    SignalR: Now monitoring keep alive with a warning timeout of 13333.333333333332, keep alive timeout of 20000 and disconnecting timeout of 30000
    
  2. 用户点击页面 A 的 link 调用 AJAX 调用

  3. 来自 2.returns 的 AJAX 调用成功并且 UI 通过 jQuery
  4. 更新
  5. 用户通过 F5 启动页面刷新,页面加载后控制台如下所示

    SignalR: serverSentEvents transport starting.
    SignalR: Attempting to connect to SSE endpoint
    SignalR: EventSource connected.
    SignalR: serverSentEvents transport connected. Initiating start request.
    
  6. 用户尝试通过单击一个简单的 link(具有 href 属性的标记)进行导航,并且该站点挂起大约 2 分钟,直到提供新页面

我注意到在 4. 之后控制台不显示

SignalR: The start request succeeded. Transitioning to the connected state.
SignalR: Now monitoring keep alive with a warning timeout of ...

行,所以我猜它与 SignalR 有关。

有没有人在过去遇到过如此巨大的延迟并且知道如何避免它?

我试过了

非常感谢任何帮助,因为我 运行 没有想法。

这个问题是在使用 Orchard 时发布的。将 Orchard 更新到 1.10.1 后,超时消失了,SignalR 现在可以在 Chrome 中完美运行。

我在更新到 1.10.1 时检查了每个代码文件,发现 Owin 和会话内容发生了一些变化,所以我认为这是 Owin 或会话实现/处理的问题。