我在管道中有一个 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 -
{
"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时,看不到它已更新。这些值为何不同,如果存在差异,则实际考虑哪个值。
谢谢
答案 0 :(得分:0)
因此似乎有人希望JSON包含设置,而不是文件路径。
对于不更新设置文件,这是预期的。 这将更新App Service的“配置”选项卡中的设置,这些设置将作为环境变量传递到您的应用程序。 它不会更新文件。 相反,它设置的设置会覆盖文件中的设置(如果您是默认的主机构建器,则至少是默认设置)。 它只会覆盖您指定的设置。