You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure SignalR默认模式无法正常工作的问题排查求助

问题排查与解决

你的核心问题是客户端直接连接了Azure SignalR服务地址,而不是后端API的Hub地址。在默认模式下,Azure SignalR是作为后端Hub的代理,客户端需要先和你的后端API进行协商,再由后端重定向到Azure SignalR服务,而不是直接连Azure的地址。

具体修正步骤:

  1. 修改客户端连接地址:把baseHubPath改成你的后端API部署地址,而非Azure SignalR的服务地址。比如后端API部署在https://your-backend-api.azurecontainerapps.io,代码应调整为:
const baseHubPath = "https://your-backend-api.azurecontainerapps.io";

客户端会自动调用后端的/hub/shop/negotiate端点,后端集成Azure SignalR后,会返回重定向到Azure SignalR的信息,客户端后续会自动完成与Azure服务的连接。

  1. 确认后端Azure SignalR配置正确性:

    • 确保AddAzureSignalR已正确配置Azure提供的连接字符串,示例如下(Program.cs中):
      builder.Services.AddSignalR().AddAzureSignalR(builder.Configuration["Azure:SignalR:ConnectionString"]);
      
    • 确认MapHub<ShopHub>("/hub/shop")的路由允许匿名访问,因为你的客户端无需授权,避免被授权中间件拦截:
      app.MapHub<ShopHub>("/hub/shop").AllowAnonymous();
      
  2. CORS策略检查:

    • Azure SignalR实例的CORS策略需包含前端域名(Azure Static Web App的地址);
    • 后端API的CORS策略也要允许前端域名访问/hub/shop路径。

错误原因说明:

  • 默认模式下,Azure SignalR的/client路径是给后端服务通信用的,不允许前端客户端直接调用,前端直接访问会因缺少后端协商的必要信息报错;
  • 直接访问Azure SignalR的/hub/shop路径不存在,默认模式下Azure SignalR的路由是由后端协商后动态生成的,并非固定的Hub路径。

内容的提问来源于stack exchange,提问作者cesAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 17:54:52