GitHub Actions部署Azure App Service报错:未找到指定包
解决GitHub Actions部署.NET Core应用至Azure App Service(非根目录项目)的路径问题
问题根源
核心矛盾是发布产物的路径与部署步骤的路径不匹配:
- 在
MYAPP目录下执行dotnet publish -o ./published时,发布文件会生成在MYAPP/published目录(相对于仓库根目录) - 部署步骤
azure/webapps-deploy@v2默认在仓库根目录执行,它会去根目录查找./published,自然找不到,触发报错 - 移除
package参数后,部署工具默认上传了整个仓库内容,而非编译好的发布包,Azure App Service无法定位正确的应用入口,因此出现404
修复方案
方案1:修正发布路径为根目录可访问的路径
修改环境变量和发布命令,让部署步骤能直接定位到发布产物:
name: Build and deploy ASP.Net Core app to Azure Web App - myappdeploy on: push: branches: - main workflow_dispatch: env: # 改为相对于根目录的明确路径 AZURE_WEBAPP_PACKAGE_PATH: './MYAPP/published' jobs: build: runs-on: windows-latest steps: - uses: actions/checkout@v2 - name: Set up .NET Core uses: actions/setup-dotnet@v1 with: dotnet-version: '6.0.x' include-prerelease: true - name: dotnet build and publish working-directory: ./MYAPP run: | dotnet restore dotnet build --configuration Release # 相对于当前工作目录(MYAPP)生成published文件夹 dotnet publish -c Release -o published - name: 'Run Azure webapp deploy action using publish profile credentials' uses: azure/webapps-deploy@v2 with: app-name: 'myappdeploy' publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_7894EB5E4C174F72A5EDE9C64B658907 }} package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
方案2:给部署步骤指定工作目录
如果不想修改发布路径,可让部署步骤在MYAPP目录下执行,直接读取该目录下的published文件夹:
# ... 其他步骤保持不变 ... - name: 'Run Azure webapp deploy action using publish profile credentials' working-directory: ./MYAPP uses: azure/webapps-deploy@v2 with: app-name: 'myappdeploy' publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_7894EB5E4C174F72A5EDE9C64B658907 }} package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
原方法无效的原因
.deployment文件:仅在Azure App Service直接关联GitHub仓库的自动部署场景生效,GitHub Actions的azure/webapps-deploy不会读取该文件- Azure App Service的
Project应用设置:同样针对自动部署场景,对Actions部署流程不生效
验证步骤
部署完成后,可通过Azure Portal的App Service -> 高级工具 -> Kudu -> 站点目录,确认site/wwwroot下是编译后的发布文件(而非仓库源码),若为源码则说明路径配置仍有问题。
内容的提问来源于stack exchange,提问作者leoenix
相关产品推荐
相关产品推荐

