【问题标题】:Failed connection handshake error when using AspNetCore.SignalR in ABP under IIS在 IIS 下的 ABP 中使用 AspNetCore.SignalR 时连接握手失败错误
【发布时间】:2018-05-31 12:44:12
【问题描述】:

我的环境

  • .NetCore SDK - 2.1.300
  • Microsoft.AspNetCore.SignalR - 1.0.0
  • IIS - Window Server 2016 中的版本 10.0.12393.0

AspNetCore.SignalR 的示例代码

AbpNetCore.SignalR 的 Abp

  • 我从 ABP 网站下载 ABP 模板代码
  • 将 .net core sdk 升级到 .net core 2.1
  • 升级 nuget 包
  • 按照我上面的步骤在项目中添加示例 AspNetCore.SignalR 聊天代码。
  • 在visual studio中运行成功

问题是,当我将它发布到服务器(与我上面的服务器相同)并运行它时,它会引发错误 - AspNetCore.SignalR.HubConnectionContext - 连接握手失败。

我已经研究过了,但没有得到任何解决方案。你能帮忙看看是什么问题吗?

我已将我的项目推送到 github:https://github.com/lcyhjx/AbpExample,您可以拉取并运行它(只需运行 AbpExample.Web.Host)。它在 Visual Studio 中运行良好,但在 IIS 中失败。

错误详情:

  • 信息:将“/chatHub”规范化为“http://localhost:6011/chatHub”。
  • 信息:WebSocket 连接到 ws://localhost:6011/chatHub?id=2zix_nPHODwLEv2p_4VCAw'
  • 错误:连接断开并出现错误“错误:服务器返回握手错误:连接握手期间发生意外错误。”。

【问题讨论】:

  • 您使用的是哪个版本的 Microsoft.AspNetCore.SignalR?
  • 您的 Web 服务器是否支持 WebSockets?尝试禁用 websockets 以了解这是否是问题stackoverflow.com/questions/9994776/…
  • 也可能是防火墙问题
  • Microsoft.AspNetCore.SignalR的版本是1.0.0
  • 是的,我的服务器支持 WebSockets,你可以看到我的 AspNetCore.SignalR 示例代码在我的服务器上运行良好

标签: asp.net-core signalr aspnetboilerplate


【解决方案1】:

我已经解决了这个问题。这是一个代码问题,在我的代码中我已经设置了

HandshakeTimeout = TimeSpan.MaxValue;

如果我评论上面的代码,那么在 VS 和 IIS 中都可以正常工作。

【讨论】:

  • 但是我仍然不明白的是,为什么我设置 HandshakeTimeout = TimeSpan.MaxValue,它在 VS 中可以正常工作,但在 IIS 中却不行。
  • 改为编辑您的问题。
【解决方案2】:

这里相同,但有点不同:我在 Rider 中运行服务器,一切正常。我把它放在另一个目录中,我遇到了握手错误。消除握手超时,它可以在任何地方工作。

【讨论】:

    猜你喜欢
    • 2021-11-14
    • 1970-01-01
    • 2021-03-08
    • 2021-02-02
    • 2018-03-05
    • 2015-01-04
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    相关资源
    最近更新 更多