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

服务端Blazor部署到IIS后WebSocket连接失败请求pending如何排查

Server Side Blazor IIS部署WebSocket pending问题排查方案
  • 第一步:确认IIS WebSocket功能已安装

    Windows服务器默认不开启WebSocket支持,需要手动安装:打开服务器管理器→添加角色和功能→展开「Web服务器(IIS)」→「应用程序开发」→勾选WebSocket协议,安装后重启IIS生效。
  • 第二步:检查web.config配置

    确认站点根目录的web.config不存在禁用WebSocket的配置,删除或修改<webSocket enabled="false" />为<webSocket enabled="true" />;同时确认ASP.NET Core模块配置正确,无需额外修改模块默认的WebSocket代理规则。
  • 第三步:确认应用服务配置正确

    代码中必须添加反向代理头转发中间件,在管道配置开头加入app.UseForwardedHeaders(),确保SignalR可以正确识别客户端的请求协议;如果站点配置了HTTPS,还需要确保ForwardedHeaders配置包含X-Forwarded-Proto头。
  • 第四步:检查应用池配置

    站点对应的应用池需将*.NET CLR版本*设置为无托管代码,托管管道模式设置为集成模式,否则IIS会错误拦截.NET Core的WebSocket请求。
  • 第五步:排查规则与拦截限制

    • 检查IIS的URL重写规则,不要对/_blazor、/_blazor/negotiate开头的请求做重定向、拦截处理,尤其是HTTP转HTTPS的规则不要截断WebSocket握手请求
    • 确认服务器防火墙、WAF、IP限制规则没有拦截WebSocket请求,WebSocket默认使用和站点相同的端口,不需要额外开端口,但部分WAF会识别并拦截异常WebSocket帧
  • 第六步:日志定位具体故障点

    • 应用日志:在appsettings.json中调整日志级别,将Microsoft.AspNetCore.SignalR、Microsoft.AspNetCore.Http.Connections的日志级别设为Debug,重启应用后复现问题,查看日志中的具体报错
    • IIS失败请求跟踪:为站点添加失败请求跟踪规则,针对状态码101、超时的请求开启跟踪,可定位请求卡在IIS的哪个处理模块
  • 第七步:排除应用本身问题

    直接在服务器本地访问Kestrel的监听端口(默认5000/5001),绕过IIS直接访问应用,如果WebSocket可以正常连接,即可确认故障出在IIS侧配置,无需排查应用代码逻辑。

错误截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:36:04