Azure App Service部署-无法覆盖appsettings.json

时间:2020-03-26 07:10:56

标签: azure azure-devops azure-web-app-service appsettings

我在管道中有一个 Azure App Service部署任务,用于将Web Api Core应用程序部署到Azure App Service。该任务具有以下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文件的路径,如下图所示-

enter image description here

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

enter image description here

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

我碰到了这个SO question,并且还在azure门户上创建了应用设置,但这还是行不通的

我在这里做什么错了。

作为附带的问题,如第一幅图所示,文件转换和变量替换选项应用程序和配置设置有什么区别,何时使用什么

编辑

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

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

谢谢

1 个答案:

答案 0 :(得分:0)

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

对于不更新设置文件,这是预期的。 这将更新App Service的“配置”选项卡中的设置,这些设置将作为环境变量传递到您的应用程序。 它不会更新文件。 相反,它设置的设置会覆盖文件中的设置(如果您是默认的主机构建器,则至少是默认设置)。 它只会覆盖您指定的设置。