ARM模板增量部署时.NET 5 App Service代码被清空的解决方案咨询
解决ARM模板增量部署导致App Service代码被清空的问题
我之前碰到过一模一样的情况,用增量模式重新部署ARM模板时,App Service里的代码莫名被清空,核心原因是增量部署会同步模板定义的属性与现有资源的属性——如果你的模板没明确指定部署源相关配置,ARM会把这些属性重置为默认值,直接清空之前部署的代码。
针对你的.NET 5 App Service模板,这里有两种可靠的解决办法:
方法1:在ARM模板中添加scmType属性锁定部署源
在App Service的siteConfig里新增scmType并设置为None,这样ARM就不会干预部署源的配置,确保已部署的代码保留。修改后的模板片段如下:
"siteConfig": { "netFrameworkVersion": "v5.0", "scmType": "None", // 新增该行,禁止ARM管理部署源 "appSettings": [ // 你的应用设置内容保持不变 ], "metadata": [ { "name": "CURRENT_STACK", "value": "dotnet" } ] }
scmType: None相当于告诉ARM:这个App Service的部署源(比如Git、Zip部署)由外部管理,不要碰它的现有状态。
方法2:在Azure DevOps部署任务中用IgnoreChanges忽略指定属性
如果不想修改ARM模板,可以在Azure DevOps的ARM模板部署任务里,通过额外参数让部署引擎跳过对部署相关属性的检查。
在任务的Additional arguments字段中输入:
-IgnoreChanges @('Microsoft.Web/sites/deploymentSource', 'Microsoft.Web/sites/siteConfig')
这个参数会让ARM部署时,不对比也不更新指定的这些属性,从而保留App Service的现有代码和配置。
额外说明
你提到其他App Service没有这个问题,大概率是因为那些服务的模板里已经包含了scmType或者部署源配置,或者你没对它们执行过后续的代码部署,所以属性重置没产生影响。
内容的提问来源于stack exchange,提问作者Maciej Wanat
相关产品推荐
相关产品推荐

