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

Docker+Nginx环境下ASP.NET SignalR连接报错求助

修复SignalR反向代理报错的Nginx配置调整

针对你遇到的Cannot change transports mid-connection错误,需要对Nginx的/some-hub/ location块做以下补充和调整:

  • 添加proxy_request_buffering off;:关闭请求缓冲,确保WebSocket握手和实时数据能直接传递,避免缓冲中断SignalR的传输切换流程。
  • 统一路径匹配规则:将location /some-hub/和proxy_pass http://AppManager:8080/some-hub/的结尾斜杠去掉,改为location /some-hub和proxy_pass http://AppManager:8080/some-hub,避免请求路径被错误重写(比如出现//negotiate这类无效路径)。
  • 补充X-Forwarded-Host头:添加proxy_set_header X-Forwarded-Host $host;,确保ASP.NET应用能获取正确的主机信息,生成正确的SignalR连接地址。

调整后的完整/some-hub location块如下:

location /some-hub {
   proxy_pass http://AppManager:8080/some-hub;
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection $connection_upgrade;
   proxy_set_header Host $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header X-Forwarded-Proto $scheme;
   proxy_set_header X-Forwarded-Host $host;
   proxy_read_timeout 86400s;
   proxy_send_timeout 86400s;
   proxy_buffering off;
   proxy_request_buffering off;
   proxy_cache_bypass $http_upgrade;
}

同时,必须确保你的ASP.NET应用配置了转发头支持,在Program.cs中添加以下代码(放在app.UseRouting()之前):

builder.Services.AddForwardedHeaders(options =>
{
    options.ForwardedHeaders = Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedFor | Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedProto;
    // Docker环境中可设置为允许所有代理,或指定Nginx容器的IP
    options.KnownProxies.Add(IPAddress.Parse("0.0.0.0/0"));
});

app.UseForwardedHeaders();

错误原因解析

  • 最初的No Connection with that ID:是因为Nginx开启了响应缓冲,导致SignalR的连接ID无法及时传递到客户端,关闭proxy_buffering后解决了该问题,但未关闭请求缓冲引发了新错误。
  • Cannot change transports mid-connection:请求缓冲会中断SignalR在长轮询与WebSocket之间的传输切换流程,同时路径斜杠不统一或转发头缺失会导致ASP.NET生成错误的连接地址,最终触发该报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 19:53:18