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

.NET 6升级至.NET 8后Docker容器中SignalR出现502错误

.NET 8升级后Kubernetes环境下SignalR连接502错误排查

.NET 8基础镜像核心变更(与.NET 6对比)

  • 默认监听端口变更:.NET 8的mcr.microsoft.com/dotnet/aspnet:8.0镜像默认让ASP.NET Core应用监听8080端口,而.NET 6的基础镜像默认监听80端口。你的Dockerfile仅声明了EXPOSE 80,但实际应用在8080端口提供服务,导致Kubernetes的Service/Ingress访问80端口时无响应,触发502 Bad Gateway。
  • 环境变量配置逻辑调整:.NET 8开始,ASP.NET Core默认通过ASPNETCORE_URLS环境变量绑定端口,未设置时默认值为http://*:8080,取代了.NET 6时期的http://*:80。

快速修复方案

方案1:修改Dockerfile指定端口

在Dockerfile中添加ASPNETCORE_URLS环境变量,强制应用监听80端口:

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base

FROM base AS final
WORKDIR /app
COPY .  .

ENV TZ="Europe/Amsterdam"
# 指定ASP.NET Core监听80端口
ENV ASPNETCORE_URLS=http://*:80

EXPOSE 80

ENTRYPOINT ["dotnet", "application.dll"]

方案2:调整Kubernetes Service配置

若不想修改Dockerfile,可将Kubernetes Service的targetPort改为8080,匹配.NET 8应用的默认监听端口。

额外验证步骤

  • 进入.NET 8容器执行netstat -tulpn,确认应用实际监听的端口是否为8080。
  • 开启服务端SignalR详细日志,查看协商请求的错误详情,排除协议兼容性问题(.NET 8对SignalR传输协议有优化,旧客户端可能存在协商失败情况)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 21:45:58