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
等等。所以我通过点击管道上的变量按钮创建了新变量,并添加了 Key1
和 key2.key3
作为具有适当值的变量(作为旁注,该值是一个常量字符串,但我希望它是将由管道中的另一个任务提供的动态值)。另外,我提供了 appsetting 文件的路径,如下图所示 -
但是,当我 运行 管道时,出现以下错误 -
Error: BadRequest - Parameter name cannot be empty. (CODE: 400)
我遇到了这个 SO question 并且还在 Azure 门户上创建了应用程序设置,但这也没有用
我哪里做错了。
作为附带问题,如第一张图片所示,文件转换和变量替换选项和应用程序和配置设置[=之间有什么区别? 58=] 以及何时使用什么。
编辑
根据评论,我能够解决问题,因此不再有错误,并且能够在 Azure 门户中验证更新后的设置。
但是,当我在浏览目录下的站点 wwwroot 文件夹中看到来自 Kudu 的 appsetting.json 时,我看不到它已更新。为什么这些值不同,如果不同,实际考虑的是哪个值。
谢谢
因此,人们似乎希望 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 -
{
"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 门户上创建了应用程序设置,但这也没有用
我哪里做错了。
作为附带问题,如第一张图片所示,文件转换和变量替换选项和应用程序和配置设置[=之间有什么区别? 58=] 以及何时使用什么。
编辑
根据评论,我能够解决问题,因此不再有错误,并且能够在 Azure 门户中验证更新后的设置。
但是,当我在浏览目录下的站点 wwwroot 文件夹中看到来自 Kudu 的 appsetting.json 时,我看不到它已更新。为什么这些值不同,如果不同,实际考虑的是哪个值。
谢谢
因此,人们似乎希望 JSON 包含设置,而不是文件路径。
至于设置文件没有更新,这是意料之中的。 这将更新应用服务的配置选项卡中的设置,这些设置将作为环境变量传递给您的应用。 它不会更新文件。 相反,它设置覆盖文件中设置的设置(如果您是默认的主机构建器,至少在默认情况下是这样)。 它只会覆盖您指定的设置。