【问题标题】:Web Socket failed during Handshake in SignalR applicationSignalR 应用程序中的握手期间 Web Socket 失败
【发布时间】:2020-01-21 20:18:40
【问题描述】:

我正在尝试运行我的 signalR 应用程序,但出现以下错误:“

WebSocket 连接到 “WS://本地主机:60377 / signalr /连接运输=的WebSockets&clientProtocol = 2.1&connectionToken = f8tOcpqdXVZ245%2BvWKsSFHaGfl6GePMtKf0Jk9wSIJQxsa5KnEiZFyGoFgYuwbQ%2FirsDjiX%2FHtVRJAvhvmOtrvYJpaZD21GHiyyqBw785nI2TICxJ4P33puQnEnjGSlMpmMBxtNk02XxkTJpZxvClw%3D%3D&connectionData =%5B%7B%22name%22%3A%22geologuehub%22%7D%5D&TID =4' 失败:WebSocket 握手期间出错:意外的响应代码: 500"

对于解决此问题的任何帮助,我将不胜感激。

【问题讨论】:

    标签: asp.net-mvc signalr


    【解决方案1】:

    在 javascript 上添加后备传输列表解决了该问题。这很奇怪,因为我使用的是 googleChrome(版本 77.0.3865.90)并且不支持网络套接字!!

      $.connection.hub.start({ transport: ['serverSentEvents', 'longPolling'] }).done(function ()
      {
           console.log(`SignalR connection transport used is "${$.connection.hub.transport.name}"`);
      });
    

    【讨论】:

      【解决方案2】:

      这可能发生在以下情况:

      1. 您的集线器不是公共类。
      2. 您的服务器无法实例化集线器。
      3. 当您的服务器在 http 上运行时,您正在建立 https 连接,反之亦然。

      【讨论】:

      • 我已经检查了前2个,除了最后一个,我的服务器运行在http上,我不知道如果服务器在http上浏览器是否会运行在https上?
      • 确定如何在客户端执行您的请求。
      • 这是客户端的请求URL:"ws://localhost:60377/signalr/connect?transport=",我不明白为什么是ws而不是http!!?
      • 您的客户端到底是什么?你如何调用连接?
      • 问题是连接传输,这很奇怪,因为我使用的是 googleChrome(版本 77.0.3865.90)并且不支持网络套接字
      猜你喜欢
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2019-10-26
      • 1970-01-01
      • 2018-12-27
      相关资源
      最近更新 更多