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

Azure APIM与应用网关环境下SignalR连接失败求助

环境背景

当前使用的Azure环境核心组件链路为:

Azure APIM > Application Gateway > Web Application Firewall > Vnet > ASE > App Service

其中App Service托管了一个使用SignalR的.NET 6 API,测试客户端为.NET 6控制台应用。

问题现象

使用上述架构通过SignalR连接客户端时,WebSocket连接尝试失败,报错:

Failed to start connection. Error starting transport 'WebSockets'. System.Net.WebSockets.WebSocketException (0x80004005): The server's response was missing the required header 'Connection'.

SignalR尝试回退到Server-Sent Events时,会挂起约15秒后抛出异常:

The underlying connection closed while processing the handshake response. See exception for details. System.IO.IOException: The server disconnected before the handshake could be started.

数十次测试中仅两次成功回退到长轮询,但未发现规律,核心诉求为修复WebSocket连接问题。

查看APIM日志,后端及APIM均无报错:前两个WebSocket连接请求虽返回成功响应,但客户端因缺少必要头判定失败;后两个Server-Sent Events请求同样返回200 OK,但客户端认为服务器已断开。

测试验证
  • 客户端逻辑与App Service均正常;
  • 客户端>APIM>App Service链路无问题;
  • 客户端>Application Gateway>私有后端链路无问题;
  • 仅客户端>APIM>Application Gateway链路出现SignalR连接失败,回退机制也无法完成握手。
排查思路与解决方案

一、WebSocket协议头传递排查

  1. 检查Application Gateway配置

    • 确认WebSocket支持已启用(默认启用,但需排查是否有自定义规则拦截头)
    • 核查重写规则或WAF策略,确认未移除Connection、Upgrade等WebSocket握手必需的请求/响应头
    • 验证后端池设置,确认未开启会干扰头传递的选项(如不当的客户端IP保留规则)
  2. 检查APIM策略配置

    • 查看自定义策略是否修改或移除了Connection: Upgrade、Upgrade: websocket等WebSocket核心响应头
    • 确保SignalR路径(如/hub/*)的策略未设置过短超时,避免干扰长连接
    • 验证APIM与Application Gateway的后端协议匹配(如均为HTTPS且证书信任链完整)

二、Server-Sent Events(SSE)回退问题排查

  1. Application Gateway的SSE适配配置

    • 将连接空闲超时调整至300秒以上,适配SSE的长连接特性
    • 检查WAF规则,确认未拦截text/event-stream类型的流式响应
    • 调整后端健康探测规则,避免因探测逻辑不适配SSE端点导致网关主动断开连接
  2. APIM的SSE策略优化

    • 禁用对SSE响应的缓存或分块处理,保持流式传输特性
    • 确保策略保留Cache-Control: no-cache、Connection: keep-alive等SSE必需响应头

三、端到端抓包验证

  • 在客户端、APIM、Application Gateway节点分别抓包,对比WebSocket握手请求的头传递链路,定位Connection头丢失的环节
  • 分析SSE握手阶段的TCP连接状态,确认是网关主动断开还是中间链路超时

四、快速验证方案

  1. 临时将APIM后端直接指向App Service(已验证此链路正常),确认问题范围锁定在APIM与Gateway之间
  2. 在Application Gateway中创建SignalR路径专属测试规则,临时禁用WAF和自定义头重写,测试连接是否恢复
  3. 同步调整APIM与Gateway的后端超时时间,确保长连接参数匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:12:49