【问题标题】:Azure App Service Deploy - Not able to override appsettings.jsonAzure 应用服务部署 - 无法覆盖 appsettings.json
【发布时间】:2020-03-26 07:10:56
【问题描述】:

我的管道中有一个 Azure App Service Deploy 任务,用于将我的 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 等等。因此,我通过点击管道上的“变量”按钮创建了新变量,并将Key1 和key2.key3 添加为具有适当值的变量(作为旁注,该值是一个常量字符串,但我希望这是一个动态值将由管道中的另一个任务提供)。另外,我提供了 appsetting 文件的路径,如下图所示 -

但是,当我运行管道时,我收到以下错误 -

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

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

我在这里做错了什么。

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

编辑

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

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

谢谢

【问题讨论】:

  • 我之前没有尝试过使用这部分任务(我们使用 ARM 模板),但它看起来像是在那个框中期待 JSON 内容而不是文件路径。
  • @juunas - 我明白你的意思,但在这种情况下,它需要整个 json 还是只需要更新的那些..
  • @juunas - 你的评论让我尝试了,它奏效了。但是,我因为这个链接而感到困惑docs.microsoft.com/en-us/azure/devops/pipelines/tasks/…

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


【解决方案1】:

所以似乎人们期望 JSON 包含设置,而不是文件路径。

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

【讨论】:

  • 我预计文件实际上会发生变化,否则我无法想象如何访问 .Net Core 中的应用程序设置将连接到环境变量而不是实际文件中的环境变量..很多不过还是谢谢:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
  • 1970-01-01
相关资源
最近更新 更多