首页 > 解决方案 > Azure Service Fabric 上的 Signalr 问题:WebSocket 握手期间出错

问题描述

我们使用 Service Fabric 来托管我们的消息传递服务 ASP.NET Core Web API(利用 signalr)和作为客户端的 React Web 应用程序。一切都在本地机器上按预期工作,但在 Azure 上却不行。我们已经为跨域处理配置了 CORS 策略,因为服务和 Web 应用程序托管在不同的服务器上。在负载均衡器中配置粘性会话。此 CORS 策略适用于本地计算机,服务和客户端托管在不同的端口上。

在 Azure 上托管应用程序后,我在浏览器控制台中收到错误消息

WebSocket 握手期间出错:意外的响应代码:500

标签: azuresignalrazure-service-fabric

解决方案


由于 CORS,这个问题很可能会发生。

查看您提供的屏幕截图,可能会看到 CORS 异常,并且您知道,调用 SignalR 服务的前端应用程序托管在不同的位置(域相同但端口不同)。

您应用的 CORS 设置可能不起作用。

你有两个解决方案:

  • 在 ASP.NET CORE 中配置CORS,以便 SignalR 可以接受来自其他域的调用。
  • 将两者托管在同一域 + 端口上以避免 CORS

推荐阅读