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

ASP.NET Web Api搭建的WebSocket服务部署Azure后连接失败如何解决?

解决Azure部署ASP.NET Web API WebSocket连接失败方案

1. 修正Web.config配置

本地运行时IIS Express默认兼容部分配置,部署到Azure App Service需要显式添加以下配置到web.config文件的system.webServer节点下:

<webSocket enabled="true" />
<modules runAllManagedModulesForAllRequests="true">
  <!-- WebDAV模块默认会拦截WebSocket握手请求,必须移除 -->
  <remove name="WebDAVModule" />
</modules>
<handlers>
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
  <remove name="WebDAV" />
</handlers>

如果有跨域需求,可以额外添加跨域允许头:

<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="*" />
    <add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS" />
  </customHeaders>
</httpProtocol>

2. 排查F1免费层配额限制

你使用的F1免费层应用服务计划有以下限制会直接导致WebSocket连接失败:

  • 单实例最多支持5个并发WebSocket连接,超出后连接会被直接拒绝
  • 每日出站流量配额仅1GB,超出后服务会被暂停直到次日配额重置
  • 计算资源上限极低,服务端握手处理稍慢就会触发超时断开
    如果确认触发配额限制,升级到B1及以上层级即可解决。

3. 校验路由匹配规则

你客户端请求的路径是wss://mysite.azurewebsites.net/webapi/api/Chat,需要确认:

  • Azure应用服务的虚拟应用路径配置是否和本地一致,如果根目录下没有配置webapi虚拟路径,需要修改客户端连接地址,或者调整部署路径
  • 服务端WebSocket握手接口是否支持GET请求,WebSocket默认使用GET请求握手,如果服务端接口只允许POST请求会返回405错误
  • 服务端路由配置是否和路径匹配,确认ApiController的路由前缀和Action路由是否对应api/Chat路径

4. 开启诊断日志定位具体错误

在Azure应用服务的「App Service日志」板块开启详细错误日志、Web服务器日志和应用程序日志,连接失败后查看日志对应的错误码:

  • 404错误:路由配置不匹配
  • 405错误:请求方法不被允许,需要放开服务端接口的GET请求权限
  • 503错误:F1层配额耗尽或者服务端进程崩溃
  • 1006错误:握手超时,一般是F1层资源不足或者服务端逻辑异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:54:04