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

Azure App Service无法通过GitHub Actions获取应用内容及CI/CD配置问题

解决ASP.NET MVC 7 Azure CI/CD部署及数据库自动更新问题

一、修复网站部署后外部无法访问的问题

1. 配置App Service启动命令

Azure App Service默认不会自动识别ASP.NET Core的启动dll,需手动指定:

  • 登录Azure门户,进入目标App Service
  • 左侧导航选「配置」→「常规设置」
  • 在「启动命令」栏输入:dotnet YourMainApp.dll(替换为实际主程序集名称,如MyMvcApp.dll)
  • 保存配置并重启App Service

2. 确认GitHub Actions工作流的部署完整性

检查自动生成的工作流文件(.github/workflows/azure-webapps.yml),确保dotnet publish命令正确输出所有必要文件:

- name: Publish to Azure Web Apps
  run: dotnet publish --configuration Release --output ${{ env.DOTNET_ROOT }}/myapp

确保部署步骤使用${{ env.DOTNET_ROOT }}/myapp目录下的全部文件,而非仅dll。

3. 统一应用监听端口

ASP.NET Core默认监听5000端口,Azure App Service对外暴露80/443端口,需统一配置:

  • 在appsettings.json中添加或修改:
{
  "Urls": "http://0.0.0.0:80"
}

或者在App Service「配置」→「应用程序设置」中添加环境变量:

  • 名称:ASPNETCORE_URLS
  • 值:http://*:80

二、配置CI/CD自动更新MySQL数据库Schema

1. 基于EF Core迁移实现自动更新

若项目使用Entity Framework Core,可在GitHub Actions工作流中添加迁移执行步骤:

步骤1:安装EF Core工具

在dotnet build步骤后添加:

- name: Install EF Core Tools
  run: dotnet tool install --global dotnet-ef

步骤2:加载数据库连接字符串

将Azure MySQL的连接字符串存入GitHub Secrets(仓库→Settings→Secrets and variables→Actions→New repository secret),命名为AZURE_MYSQL_CONNECTION_STRING,再在工作流中引入:

- name: Set Connection String
  run: echo "ConnectionStrings__DefaultConnection=${{ secrets.AZURE_MYSQL_CONNECTION_STRING }}" >> $GITHUB_ENV

步骤3:执行数据库迁移

在部署到Azure前添加迁移步骤:

- name: Apply Database Migrations
  run: dotnet ef database update --project YourMvcProjectName --configuration Release

替换YourMvcProjectName为实际项目名称(包含.csproj的目录名)。

2. 确保数据库访问权限

  • 进入Azure MySQL服务器的「防火墙和虚拟网络」设置,将GitHub Actions的IP段加入允许列表,或临时开启「允许访问Azure服务」用于测试
  • 确认MySQL用户拥有CREATE、ALTER、DROP等schema变更权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:35:26