【问题标题】:SignalR stream works only after Forced Refresh in ProductionSignalR 流仅在生产中的强制刷新后才有效
【发布时间】:2017-05-12 20:36:14
【问题描述】:

我有一个为 Web Socket 功能实现 SignalR 的 MVC 5 Web 应用程序。

在生产中,安装在 Windows Server 2008 和 IIS 7.5 上,它会生成一个错误,其中连接的客户端仅在浏览器上执行强制刷新后才接收流。

这甚至会在从未打开过的机器和浏览器上复制,这让我认为这不是浏览器缓存问题。

这不会在开发中复制。

环境也有领域差异:

在开发中我使用 localhost:61350

在生产中我使用 mydomain.com/MyWebApp

因此文件在生产时不是从根域提供的,而是使用虚拟路径提供的。

关于如何解决此问题的任何想法?

编辑 1:

该问题已确认复制到:

谷歌浏览器 火狐 歌剧 边缘 Safari IOS

这些只是我可以访问并进行测试的浏览器。

【问题讨论】:

  • 您能否检查浏览器中的 javascript 控制台以了解究竟是哪个错误?
  • 没有抛出错误,当问题发生时,当它工作正常时,它会按预期记录每次更新,但仅在我强制刷新时。

标签: c# asp.net websocket signalr


【解决方案1】:

我能够通过将 SignalR start() 调用移出 $(document).ready() 来解决此问题。我不知道为什么这会导致问题,但就我而言,确实如此。我正在使用 .NET 4.7(但尝试过 4.5 和 4.6)和 jQuery 3.2.1。

仅适用于刷新:

<script>
    $(document).ready(function() {
        $.connection.hub.start().done(function() {
            ...
        });
    });
</script>

一直有效:

<script>
    $.connection.hub.start().done(function() {
        ...
    });
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    • 2013-07-12
    • 2017-01-03
    • 2014-05-14
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多