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

使用GitHub Action部署.NET 6 Web API:appsettings.json未随环境配置更新

GitHub Actions部署Azure Web App后appsettings配置未生效的解决方法

核心认知纠正:Azure Web App应用设置不修改物理文件

Azure Web App的az webapp config appsettings set命令是设置平台级的应用配置,这些配置会在应用运行时覆盖appsettings.json中的同名值,不会直接修改服务器上Kudu控制台里看到的appsettings.json物理文件。你在Kudu看到文件没变化是正常的,但应用实际运行时会优先使用平台设置的配置。验证配置是否生效,应该去Azure门户的Web App -> 配置 -> 应用设置里查看,或者通过应用接口输出当前配置值。

问题1:az cli命令中的配置文件路径错误

你的部署步骤中,执行az webapp config appsettings set时指定的文件路径不正确:原命令用的是@Test.WebApi/Test.WebApi/${{ env.JSON_PATH }},但仓库中配置文件实际路径是src/Test.WebApi/${{ env.JSON_PATH }}(对应WORKING_DIRECTORY变量)。路径错误会导致az cli找不到配置文件,自然无法设置应用配置。

修正方法:
将deploy步骤中的路径改为@${{ env.WORKING_DIRECTORY }}/${{ env.JSON_PATH }},默认配置文件路径也对应修改:

- name: Default WebApp Configuration from appsettings.json
  uses: azure/CLI@v1
  with:
     azcliversion: 2.42.0
     inlineScript: |
        az webapp config appsettings set -g "${{ env.RESOURCE_GROUP }}" -n '${{ env.AZURE_WEBAPP_WEBAPI_NAME }}' --settings "@${{ env.WORKING_DIRECTORY }}/appsettings.json" -s staging
  
- name: WebApp Configuration
  uses: azure/CLI@v1
  with:
     azcliversion: 2.42.0
     inlineScript: |
        az webapp config appsettings set -g "${{ env.RESOURCE_GROUP }}" -n '${{ env.AZURE_WEBAPP_WEBAPI_NAME }}' --settings "@${{ env.WORKING_DIRECTORY }}/${{ env.JSON_PATH }}" -s staging

问题2:Build步骤未使用正确的发布命令

当前Build步骤用的是dotnet build,这只会生成编译后的二进制文件,不会生成适合部署的完整包,也不会处理环境配置的合并。正确做法是使用dotnet publish命令,可指定环境自动合并配置:

修正Build步骤:
替换原Build和Upload artifact步骤:

- name: Publish Project
  run: dotnet publish ${{ env.WORKING_DIRECTORY }}/Test.WebApi.sln --configuration Release --output "${{ env.WORKING_DIRECTORY }}/_publish"

- name: Upload artifact
  uses: actions/upload-artifact@v3
  with:
    name: ASP-app
    path: "${{ env.WORKING_DIRECTORY }}/_publish"

deploy步骤中package路径保持download/ASP-app即可(对应下载的发布包)。

问题3:Slot Swap后的配置重复设置问题

在deploy-to-production-slot步骤中,你在swap之后又重新执行了应用设置命令,但默认情况下,Slot Swap会将staging槽的非槽特定应用设置同步到production槽。如果staging槽配置已正确设置,swap后production槽会自动继承,无需重复执行设置命令,重复执行反而可能因路径错误导致配置被覆盖。

建议:
移除deploy-to-production-slot中的Default WebApp Configuration from appsettings.json和WebApp Configuration步骤,依赖slot swap同步配置即可。若有production槽独有的配置,可在Azure门户中将其标记为槽特定,swap时不会覆盖这些配置。

额外验证步骤

  1. 在GitHub Actions部署步骤中,添加查看配置文件内容的步骤,确认路径正确:
- name: Verify config file exists
  run: |
    cat ${{ env.WORKING_DIRECTORY }}/${{ env.JSON_PATH }}
  1. 执行az cli命令后,添加查看当前应用设置的步骤,确认配置已生效:
- name: Check App Settings
  uses: azure/CLI@v1
  with:
    azcliversion: 2.42.0
    inlineScript: |
      az webapp config appsettings list -g "${{ env.RESOURCE_GROUP }}" -n "${{ env.AZURE_WEBAPP_WEBAPI_NAME }}" -s staging

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 01:53:15