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

部署.NET 6 MVC项目至App Engine Flex环境遇502错误求助

.NET 6项目部署Google Cloud App Engine出现502 Bad Gateway问题排查

问题背景

我尝试将.NET 6项目部署到Google Cloud App Engine时遇到502错误,操作流程:

  • 通过App Engine SSH创建文件夹并初始化.NET 6项目
  • 执行dotnet restore完成依赖还原
  • 执行dotnet publish -c Release发布项目
  • 将Dockerfile、app.yaml放入发布文件夹,launchSettings.json配置见下文
  • 执行gcloud app deploy完成部署后,访问页面显示502 Bad Gateway nginx错误

部署日志截图

部署日志

相关配置文件

Dockerfile

ADD / /app
ENV ASPNETCORE_URLS=http://localhost:8080
WORKDIR /app
ENTRYPOINT [ "dotnet", "giveawayproject.dll"]

app.yaml

runtime: custom
env: flex

# 此示例在App Engine弹性环境运行会产生费用
# 以下设置仅用于测试,不适合生产环境
manual_scaling:
  instances: 1
resources:
  cpu: 2
  memory_gb: 6
  disk_size_gb: 30

env_variables:
  # ASP.NET会将My__Greeting中的__转换为:
  My__Greeting: Hello AppEngine!

launchSettings.json

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:8080",
      "sslPort": 44302
    }
  },
  "profiles": {
    "Wizz.Giveaway.Mvc": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://localhost:8080",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

问题原因及修复方案

  1. Dockerfile文件拷贝路径错误

    • 原指令ADD / /app会将宿主机根目录内容拷贝到容器,完全不符合预期,应改为ADD . /app,将当前发布目录的所有文件拷贝到容器/app目录。
  2. 应用监听地址限制

    • ASPNETCORE_URLS=http://localhost:8080会让应用仅监听容器内部的localhost,App Engine的反向代理无法访问该端口。需修改为ASPNETCORE_URLS=http://0.0.0.0:8080,允许容器所有网卡接口监听请求。
  3. 启动DLL名称不匹配

    • 从launchSettings.json可知项目名称为Wizz.Giveaway.Mvc,发布后生成的主DLL应为Wizz.Giveaway.Mvc.dll,但Dockerfile中写的是giveawayproject.dll,名称不匹配会导致应用无法启动。需将ENTRYPOINT中的DLL名称改为实际发布后的文件名。
  4. 环境变量配置不合理

    • 当前launchSettings.json设置的是Development环境,部署到生产环境建议设置为Production,可在Dockerfile中添加ENV ASPNETCORE_ENVIRONMENT=Production,或在app.yaml的env_variables中配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 17:05:58