Azure App Service WebSocket连接报错:Reached the end of the file
22-10-07T14:49:54 PID[1752] Information Operation=SafetyAccessController.Dispose
2022-10-07T14:49:54 PID[1752] Warning ***** new Open WebSocket Gate: 34B1F7D5DCC9
2022-10-07T14:49:54 PID[1752] Warning ***** Error on WebSocket Gate: 34B1F7D5DCC9 error?:Reached the end of the file state=Aborted status=
以下是可能的诱因及排查方向:
平台自动更新兼容性问题:Azure App Service会定期推送runtime、网络组件或基础架构更新,若错误出现时间与平台更新窗口重合,大概率是更新引发的兼容性冲突。可在App Service的「Resource Health」或「Deployment Center」中查看近期平台更新记录,确认相关变更。
WebSocket配置或网络规则变更:
- 检查App Service「常规设置」中WebSocket功能是否仍处于启用状态;
- 排查网络安全组(NSG)入站规则,确认80/443端口的WebSocket握手流量未被拦截;
- 客户端网络环境新增防火墙、代理等限制,也可能导致握手报文传输不完整,触发EOF错误。
应用资源耗尽:即使未修改代码,并发连接突增、CPU/内存资源占满会导致服务端无法正常处理WebSocket请求,引发连接中断。查看App Service「Metrics」面板,检查错误时段的CPU、内存、连接数指标是否存在异常峰值。
客户端侧变更:客户端版本更新、浏览器内核升级或请求格式异常,都可能导致服务端读取握手报文时触发EOF错误。尝试用不同客户端(如wscat测试工具、其他浏览器)连接服务端,排查是否为特定客户端问题;同时检查客户端请求头的
Upgrade、Connection、Sec-WebSocket-Key等字段是否符合WebSocket标准。前端代理/CDN干扰:若App Service前部署了Azure Front Door或CDN,近期的规则变更(如缓存策略、WebSocket优化设置)可能导致报文被截断或修改。临时绕过代理直接连接App Service原生域名,验证连接是否恢复正常。
内容的提问来源于stack exchange,提问作者Paulo Sergio Simoes

