SignalR WebSockets 在本地工作但不在服务器上工作

2024-01-10

我正在尝试让 Web Sockets 作为使用 SignalR 2.4.2 的 ASP.NET 4.8 Framework 应用程序的协议。它可以在本地主机上运行 Windows 10 Pro 的 Visual Studio 2019 上正常运行。它在 Windows 2016 服务器(不是 Azure)上失败,并在 Chrome 85 中出现以下错误:

signalr?v=igzza46L1gfiUBzl96WDUmuI9_CUHV_qqd0Kd-fDr8A1:1 WebSocket 连接到 'wss://someServer.org/signalr/connect?transport=webSockets&clientProtocol=2.1&connectionToken=...&connectionData=%5B%7B%22name%22%3A%22myhub% 22%7D%5D&tid=0' 失败:WebSocket 握手期间出错:net::ERR_CONNECTION_RESET

and

No transport could be initialized successfully. Try specifying a different transport or none at all for auto initialization.
  at Object.error (signalr?vv=...:1)
  at g (signalr?vv=...:1)
  at v (signalr?vv=...:1)
  at h.transportFailed (signalr?vv=...:1)
  at signalr?vv=...:1
  at WebSocket.e.socket.e.socket.onclose (signalr?vv=...:1)

在服务器上打开此 URLhttps://myserver.org/signalr/negotiate获取 SignalR 详细信息会产生以下结果:

Url "/signalr"
ConnectionToken "..."
ConnectionId    "..."
KeepAliveTimeout    20
DisconnectTimeout   30
ConnectionTimeout   110
TryWebSockets   true
ProtocolVersion "1.2"
TransportConnectTimeout 5
LongPollDelay   0   

以下是 Firefox 中针对失败调用的控制台响应链:

SignalR: Client subscribed to hub 'myhub'. 
SignalR: Negotiating with '/signalr/negotiate?clientProtocol=2.1&connectionToken=...&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D'. 
SignalR: webSockets transport starting. 
SignalR: Connecting to websocket endpoint 'wss://myServer.org/signalr/connect?transport=webSockets&clientProtocol=2.1&connectionToken=...%3D%3D&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D&tid=8'
Firefox can’t establish a connection to the server at wss://myServer.org/signalr/connect?transport=webSockets&clientProtocol=2.1&connectionToken=...&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D&tid=8.
SignalR: Websocket closed. 
SignalR: Closing the Websocket. 
SignalR: webSockets transport failed to connect. Attempting to fall back. 
SignalR: No fallback transports were selected. 
SignalR: Stopping connection. 
SignalR: Fired ajax abort async = true.

WebSockets 已使用以下说明安装在服务器上:

  • https://learn.microsoft.com/en-us/iis/configuration/system.webserver/websocket#windows-server-2012-or-windows-server-2012-r2 https://learn.microsoft.com/en-us/iis/configuration/system.webserver/websocket#windows-server-2012-or-windows-server-2012-r2
  • https://learn.microsoft.com/en-us/iis/configuration/system.webserver/websocket#how-to-configure-websocket https://learn.microsoft.com/en-us/iis/configuration/system.webserver/websocket#how-to-configure-websocket

在客户端上,它使用以下内容:

$.connection.hub.logging = true;
$.connection.hub.start({ transport: ['webSockets'] })
   .done(function () {
    // ...
   }).fail(e => {
        console.log(e);
    });;

此外,BrowserLink 在 Visual Studio 中被禁用,因为这被认为是导致问题的可能原因。

研究的其他文章:

  • https://stackoverflow.com/a/37531108/177416 https://stackoverflow.com/a/37531108/177416
  • https://github.com/SignalR/SignalR/issues/3148 https://github.com/SignalR/SignalR/issues/3148

有人建议删除Application_PreSendRequestHeaders from Global.asax.cs但这并没有改变服务器上的任何内容。

我知道 SignalR 支持其他协议,但我正在尝试让 Web 套接字正常工作。

Thanks.

Update:Web 套接字协议也适用于服务器本身的本地主机,通过 RDP 登录并使用浏览器打开页面。


这是一个很难解决的问题。与系统管理员合作,我们发现这是由负载平衡/代理级别引起的,它位于我们所有流量的前面。默认情况下,它不支持网络套接字。一旦启用了 Web 套接字,SignalR 就很高兴。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SignalR WebSockets 在本地工作但不在服务器上工作 的相关文章

随机推荐

  • Perl 中 printf、print 和 sprintf 之间的区别

    具体用法是什么print printf and sprintf在 Perl 中 这三个关键字都用于打印目的 但有人可以简单地区分一下吗 Short 请参阅手册 http perldoc perl org functions print ht
  • C# 发送 HTML 和文本电子邮件 - 最优雅?

    同时发送 HTML 和文本电子邮件是最佳做法吗 如果我只发送 HTML 有什么危险 我在想下面这样的事情 来自http johnnycoder com blog 2009 04 15 net mailmessage linkedresour
  • 重置 HTML 表中的奇数/偶数序列

    我担心答案是否定的 但只是想尝试确认一下 我将表格的每隔一行设置为灰色背景 table tr nth child odd background color eee 这工作正常 但表中还嵌入了标题行 我希望奇数 偶数模式能够重置并在每个标题行
  • 使用 Freemarker 中的参数调用 Java 方法

    以下 FTL 标记对我来说效果很好 并在我的服务器端 JiveActionSupport 对象中调用 getWidgets lt list widgets as widget gt do something with widget sku
  • Heroku CLI 错误

    无法再使用 Heroku CLI Error Installing Heroku Toolbelt v4 done For more information on Toolbelt v4 https github com heroku he
  • BackboneJS 重新排列集合中模型的最佳方法,同时维护每个模型的 0 索引序数属性

    我在这里遇到一个问题 我有一个 BackboneJS 模型的集合 每个模型都有一个 序数 属性来跟踪其在集合中的顺序 这是我的播放数据 var ex group test data title PRE EXERCISE id 0 ordin
  • 使用 Python TKinter / imageTK 在屏幕上的图像之间淡入淡出

    我是一个Python新手 一直在制作一个有点奇怪的幻灯片脚本 该脚本循环显示图像 并且还从另一个文件中获取变量以 解决 图像 我确信我的代码是悲剧性的 但它确实有效 见下文 我的问题是 如何让它在图像之间淡出 而不是暂时变成白色 然后转到当
  • OutlinedTextField 不会在 Compose 中调整为最小宽度

    我试图使 OutlinedTextField 见下图 充当 wrap content 理想的情况是它足够大以适合内部文本500g如果用户编辑该字段 则展开和收缩 如果我没记错的话 这可以通过 非 Compose ConstraintLayo
  • 如何使 Observable 在 1 秒的时间间隔后发出字符

    我刚刚开始使用 RxJava android 为了练习和入门 我想让 observable 每 1 秒发出字符串中的字符 我该怎么做 这是我到目前为止所尝试过的 它只是立即发出字符串 Observable
  • jQuery Cycle 插件 - 暂停/恢复奇怪的行为

    我有一个使用很棒的循环插件运行的幻灯片 当您单击演示中的按钮时 我会在页面上显示一个隐藏层并发送 暂停 命令来循环 我有两个问题 当收到暂停命令时 循环立即翻转回序列中的第一张幻灯片 为什么 并且不会触发我的之前 之后回调 关闭图层后 我发
  • 正则表达式用于 [] 之间的任何内容

    我需要找到 的正则表达式 例如 如果字符串是 Hi Stack 这是我需要 Find 的 Tag 它应该返回 堆栈 标记 查找 非常简单 您只需要 1 用反斜杠转义括号 2 使用 捕获内容 括号是一个捕获组 它们捕获其内容以供以后使用 后面
  • 如何通过复制上一行来动态创建新行

    我有一个如下所示的数据框 编辑后的数据框 df pd DataFrame subject id 1 1 1 1 1 1 1 2 2 2 2 2 time 1 2173 04 03 12 35 00 2173 04 03 12 50 00 2
  • Android Intent.ACTION_VIEW

    我需要用户选择自己的播放器来播放视频 我尝试 public class VideoViewActivity extends Activity Override public void onCreate Bundle savedInstanc
  • 比较名称之间的相似度

    我必须根据名称对一些数据进行交叉验证 我面临的问题是 根据来源 名称略有不同 例如 L L AIR CONDITIONING vs L L AIR CONDITIONING Service BEST ROOFING vs ROOFING I
  • 处理异常的示例代码

    我是 Android 移动应用程序开发新手 我想知道如何处理异常HttpConnection相关异常或任何其他异常 我需要显示一个AlertDialog给用户 请提供示例代码或项目源代码以了解我如何处理HttpConnection或类似类型
  • 在 iPhone 应用程序中显示 HTML

    如何在 iPhone 的 textview 中打开 url 是否可以显示数据links photos和所有html entities 您可以使用 UIWebView 从文件加载静态包含 html 照片 css javascript NSSt
  • 将大字符串写入文件的最佳方法

    在 C 中 我正在读取中等大小的文件 100 KB 1 MB 修改部分内容 最后写入不同的文件 所有内容均为文字 修改是作为字符串对象和字符串操作完成的 我目前的做法是 使用以下命令读取原始文件中的每一行StreamReader Open
  • Firefox 拖动 div 就像拖动图像一样

    我正在使用以下 HTML CSS 和 Javascript 代码 如果您想测试的话 可以将其放在一个文档中
  • 从数据框中删除控制字符空格

    我有一个数据框 df 通过它我可以使用它来获取列表列表 data list map str n tolist for n in df values 之后我从这样的数据中替换特定的控制字符 data e replace u xa0 u for
  • SignalR WebSockets 在本地工作但不在服务器上工作

    我正在尝试让 Web Sockets 作为使用 SignalR 2 4 2 的 ASP NET 4 8 Framework 应用程序的协议 它可以在本地主机上运行 Windows 10 Pro 的 Visual Studio 2019 上正