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

SignalR经AGW无法连接:原因排查与解决方案咨询

Azure Application Gateway导致SignalR连接异常的原因及解决办法

可能的影响因素及对应解决方案

1. 超时配置不匹配

AGW的请求超时或连接超时设置与SignalR后端的HandshakeTimeout、KeepAliveInterval不匹配,会导致握手阶段超时或连接被提前断开。

  • 调整AGW的请求超时设置,确保其大于SignalR后端的HandshakeTimeout(建议至少比后端值大30秒以上)。
  • 针对WebSocket连接,确认AGW的WebSocket超时设置(默认300秒),需大于SignalR的KeepAliveInterval,避免因无数据传输被AGW主动断开。

2. WebSocket协议支持未正确配置

AGW默认支持WebSocket,但如果存在协议过滤或头部转发限制,会导致WebSocket握手失败。

  • 确保AGW的HTTP设置中未禁用WebSocket协议,检查是否有自定义规则阻止Upgrade和Connection头部的传递。
  • 验证AGW的后端池配置中,后端协议设置为HTTP或HTTPS(WebSocket依赖HTTP/1.1+协议)。

3. 会话亲和性(粘性会话)未启用

SignalR要求客户端在整个连接生命周期内与同一个后端Web App实例通信,若AGW未配置会话亲和性,请求会被分发到不同实例,导致连接中断或握手失败。

  • 在AGW的路由规则中启用会话亲和性,选择Cookie-based模式,确保同一客户端的请求始终路由到同一后端实例。

4. 后端健康检查配置不合理

如果AGW的健康检查路径未指向SignalR的健康端点,或健康检查频率/阈值设置不当,AGW可能误判后端实例不健康,导致流量无法正确转发。

  • 将健康检查路径设置为SignalR的健康检查端点(如/health,需确保Web App已配置对应的健康检查接口)。
  • 调整健康检查的间隔和重试次数,避免因短暂的请求延迟导致AGW标记后端为不健康。

5. HTTP头部转发限制

SignalR握手和连接过程依赖特定HTTP头部(如Upgrade、Connection、X-Forwarded-For、X-Forwarded-Proto),若AGW未正确转发这些头部,会导致握手失败或连接异常。

  • 在AGW的HTTP设置中,确保允许转发Upgrade、Connection等WebSocket相关头部。
  • 配置AGW传递X-Forwarded-Proto头部,让SignalR后端能识别客户端的原始协议(HTTP/HTTPS),避免生成错误的连接地址。

6. 端口映射配置错误

若AGW监听的前端端口与后端Web App的端口不匹配,或存在端口转发规则错误,会导致连接请求无法正确到达后端。

  • 确认AGW的前端端口(如80/443)与后端池的后端端口(Web App的80/443)对应正确,无端口映射错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:25:02