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

.NET 8 Web API容器部署至Azure容器注册表(ACR)失败求助

.NET 8 Web API容器化部署ACR后出现504网关超时问题

我正在开发一个.NET 8 Web API并使用Docker进行容器化,该应用在本地机器上运行正常,但部署到Azure容器注册表(ACR)后出现故障。此前使用.NET 7版本时,部署至ACR无任何问题。

更新:使用该容器镜像的Web应用日志显示“已连接!504.0 网关超时”

Dockerfile内容

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["MyProject.API/MyProject.API.csproj", "MyProject.API/"]
COPY ["MyProject.Core/MyProject.Core.csproj", "MyProject.Core/"]
COPY ["MyProject.Models/MyProject.Models.csproj", "MyProject.Models/"]
RUN dotnet restore "MyProject.API/MyProject.API.csproj"
COPY . .
WORKDIR "/src/MyProject.API"
RUN dotnet build "MyProject.API.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "MyProject.API.csproj" -c Release -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyProject.API.dll"]

排查与解决建议

  • 检查端口映射配置:登录Azure门户,进入Web App的“容器设置”页面,确认目标端口设置为容器暴露的80或443,与Dockerfile中的EXPOSE端口保持一致。
  • 验证镜像可用性:从ACR拉取镜像到本地运行测试,确认镜像本身无问题。执行命令:
    docker pull <你的ACR名称>.azurecr.io/myproject-api:latest
    docker run -p 8080:80 <你的ACR名称>.azurecr.io/myproject-api:latest
    
    之后访问http://localhost:8080测试API是否正常响应。
  • 确认运行时完整性:在Dockerfile的base阶段添加RUN dotnet --info,重新构建镜像并查看运行时版本是否完整,避免基础镜像存在缺失。
  • 查看详细启动日志:通过Azure Web App的“日志流”功能,查看容器启动时的详细日志,确认API是否成功初始化,是否存在配置错误或依赖缺失。
  • 延长启动超时时间:进入Web App的“常规设置”页面,将启动超时时间调整为300秒(默认可能较短),给.NET 8应用足够的初始化时间。
  • 核对应用配置:确认容器运行时使用的环境变量、连接字符串等配置与本地一致,避免因配置缺失导致应用启动失败或无法响应请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 06:11:04