Azure 应用服务部署 - 无法覆盖 appsettings.json

Azure App Service Deploy - Not able to override appsettings.json

我的管道中有一个 Azure 应用服务部署 任务,用于将我的 Web Api 核心应用部署到 Azure 应用服务。该任务具有以下 yaml -

- task: AzureRmWebAppDeployment@4
  inputs:
    ConnectionType: 'AzureRM'
    azureSubscription: 'myserviceconnection'
    appType: 'webAppLinux'
    WebAppName: 'mytestwebapp'
    packageForLinux: '$(Build.ArtifactStagingDirectory)/**/*.zip'
    AppSettings: 'TestWebApp/TestWebApp/appsettings.json'

我一直在关注 this document 如何更新 .json 文件中的设置。据我所知,我必须在管道中创建一个与我需要更新的密钥匹配的变量。假设我的 appsettings.json -

中有以下 Json 结构
{
  "AllowedHosts": "*",
  "ServiceConfiguration": {
    "Key1": "value1",
    "Key2": {
      "Key3": "value3",
      "Key4": "value4"
    }
  }
}

假设我必须将 key1 更新为 somenewvalue1 并将 key2.key3 更新为 someothervalue3 等等。所以我通过点击管道上的变量按钮创建了新变量,并添加了 Key1key2.key3 作为具有适当值的变量(作为旁注,该值是一个常量字符串,但我希望它是将由管道中的另一个任务提供的动态值)。另外,我提供了 appsetting 文件的路径,如下图所示 -

但是,当我 运行 管道时,出现以下错误 -

Error: BadRequest - Parameter name cannot be empty. (CODE: 400)

我遇到了这个 SO question 并且还在 Azure 门户上创建了应用程序设置,但这也没有用

我哪里做错了。

作为附带问题,如第一张图片所示,文件转换和变量替换选项应用程序和配置设置[=之间有什么区别? 58=] 以及何时使用什么。

编辑

根据评论,我能够解决问题,因此不再有错误,并且能够在 Azure 门户中验证更新后的设置。

但是,当我在浏览目录下的站点 wwwroot 文件夹中看到来自 Kudu 的 appsetting.json 时,我看不到它已更新。为什么这些值不同,如果不同,实际考虑的是哪个值。

谢谢

因此,人们似乎希望 JSON 包含设置,而不是文件路径。

至于设置文件没有更新,这是意料之中的。 这将更新应用服务的配置选项卡中的设置,这些设置将作为环境变量传递给您的应用。 它不会更新文件。 相反,它设置覆盖文件中设置的设置(如果您是默认的主机构建器,至少在默认情况下是这样)。 它只会覆盖您指定的设置。