【问题标题】:SignalR: Error during WebSocket handshake: Unexpected response code: 400SignalR:WebSocket 握手期间出错:意外响应代码:400
【发布时间】:2014-06-01 13:09:43
【问题描述】:

我刚刚开始使用 SignalR。我已经使用信号器在我的站点上实现了实时数据反射。我在尝试连接 web-socket 时在控制台上收到“Web-Socket 握手期间出错:意外的响应代码:400”错误。

应用程序使用 Asp.net MVC - signalR 2.0.3 开发并托管在 Windows server 2012 - IIS 8 上

我从this link找到了一个解决方案

它说我们需要网站指向 HTTPS(并使用 SSL)然后 http 与 web-socket 一起工作。我的问题也解决了。我的疑问是 - 我们不能不使用 HTTPS 来解决这个问题吗?因为每个网站可能不需要托管在 HTTPS(需要 SSL)上。

【问题讨论】:

  • 您的网站可能通过 HTTP 提供服务,而您的 WebSocket 通过 SSL(WSS) 连接。这是一个正常/有效的方案...
  • 我的请求仅指向 ws://* 而不是 wss://* 显示在控制台错误中
  • 好吧,我不知道 SignalR 是如何工作的,但我知道可以通过 HTTP 和 SSL 上的 websocket 服务 HTML...

标签: websocket signalr


【解决方案1】:

在你的 web.config 文件中使用这个标签:

<httpRuntime maxRequestLength="40960" targetFramework="4.5" requestValidationMode="2.0" />

&lt;system.web&gt; 标签下。 描述你的目标框架。错误会消失

【讨论】:

  • @DanielMinnaar,当然!因为微软。
【解决方案2】:

如果问题是存在于从客户端到服务器的路径中的代理,那么您只能向您的提供商(客户端和服务器)投诉。

How HTML5 Web Sockets Interact With Proxy Servers

通过使用安全连接,您可以确保没有代理会干扰您的连接。

【讨论】:

    【解决方案3】:

    我在带有 Angular 8 前端的 .Net Core Web API 中遇到了同样的问题。我的问题是服务器上没有安装 Websocket 协议。从服务器管理器安装它 -> 添加角色和功能并且它工作了

    【讨论】:

    • 这也适用于我。 Ionic + .Net Core + SignalR 应用程序
    【解决方案4】:

    如果您在负载平衡器后面的多台服务器上运行,也会发生此 400 错误。检查 400 响应的正文(例如,使用 Fiddler)并查看是否找到:The ConnectionId is in the incorrect format。如果是这样,那么您的问题可能是您没有在每个应用程序服务器上使用相同的机器密钥。

    有关解决方案的详细信息,请参阅此答案:https://stackoverflow.com/a/43479474/979202

    【讨论】:

      【解决方案5】:

      如果您使用 Nginx,请添加以下三行(以 proxy_ 开头的行):

      server {       
          listen       443; # Or 80 or whatever
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "upgrade";
          ...
      }
      

      HTTPS/HTTP 不是问题。 HTTPS页面会自动使用WSS,HTTP使用WS,无需手动设置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-02
        • 2018-02-23
        • 2019-08-05
        • 1970-01-01
        • 1970-01-01
        • 2019-06-25
        • 1970-01-01
        • 2021-04-09
        相关资源
        最近更新 更多