因此,我们刚刚将 .NET 6 项目升级到 .NET 8,除了 SignalR 连接之外,一切都运行良好。
我们在 kubernetes 集群上运行,并有一个入口和服务(未更改)来连接到运行 .NET 应用程序的 docker 容器。
当我们运行 .NET 6 容器时,一切工作正常,但是一旦我们部署 .NET 8 容器,HubConnection.StartAsync(来自其他应用程序)就会抛出:
“响应状态代码并不表示成功:502(错误网关)。”
有谁知道 .NET 8 或 docker 容器 (mcr.microsoft.com/dotnet/aspnet:8.0) 与 .NET 6 相比是否发生了某些变化,使其不会公开端口或其他会阻止通信的内容?
我们尝试在本地主机上运行它,然后它可以连接。 而且.NET 6应用程序仍然可以正常运行,所以这让我相信这不是kubernetes入口或服务,而是容器中的东西。
Dockerfile:
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
FROM base AS final
WORKDIR /app
COPY . .
ENV TZ="Europe/Amsterdam"
EXPOSE 80
ENTRYPOINT ["dotnet", "application.dll"]
Microsoft 更新了 Dotnet 8 映像以默认使用端口 8080 和 8081
Andrew Lock 的博客上有一篇关于它的精彩文章:https://andrewlock.net/exploring-the-dotnet-8-preview-updates-to-docker-images-in-dotnet-8/
当我们在 RC1 时间左右开始迁移时,我在类似的情况下遇到了类似的问题。更新相关服务转发到8080/81端口后,一切又恢复了活力。
但是,我认为 GA 版本中可能会出现类似的问题(我通过搜索我的答案找到了你的问题!)