You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AzureRmWebAppDeployment@4部署Linux应用计划时URL不匹配报错

问题原因及修复方案

问题原因

  1. ARM模板配置缺陷:创建部署槽时未正确关联主应用的Linux运行时配置,或手动覆盖了hostNames属性,导致槽的SCM(Kudu)站点未被自动创建,进而使带.scm后缀的URL返回404。
  2. DevOps任务参数不匹配:AzureRmWebAppDeployment@4任务中appName、slotName或resourceGroupName与实际资源信息不一致,导致任务构造了错误的SCM URL。

最优修复方案

1. 修正ARM模板的部署槽配置

确保模板中部署槽的配置正确继承主应用的Linux属性,且未手动干预主机名生成:

{
  "type": "Microsoft.Web/sites/slots",
  "apiVersion": "2022-03-01",
  "name": "[concat(parameters('webAppName'), '/staging')]",
  "location": "[parameters('location')]",
  "dependsOn": [
    "[resourceId('Microsoft.Web/sites', parameters('webAppName'))]"
  ],
  "properties": {
    "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
    "siteConfig": {
      "linuxFxVersion": "[parameters('linuxFxVersion')]"
    }
  }
}
  • 不要添加hostNames字段,避免覆盖默认生成的SCM主机名。
  • 确认serverFarmId指向的是Linux应用计划,且linuxFxVersion与主应用一致。

2. 调整Azure DevOps任务参数

确保任务参数与实际资源完全匹配,显式指定槽名称:

- task: AzureRmWebAppDeployment@4
  displayName: 'Deploy to Staging Slot'
  inputs:
    azureSubscription: '<你的Azure服务连接名称>'
    appType: 'webAppLinux'
    WebAppName: '<主Web应用名称>'
    slotName: 'staging'
    packageForLinux: '$(Build.ArtifactStagingDirectory)/**/*.zip'

若仍存在问题,可添加额外参数强制指定槽:

AdditionalArguments: '--slot staging'

3. 验证SCM站点状态

用Azure CLI检查槽的主机名列表,确认SCM站点已创建:

az webapp deployment slot show --name <主应用名称> --slot staging --resource-group <资源组名称> --query 'hostNames'

返回结果中若包含<主应用名称>-staging.scm.azurewebsites.net,说明SCM站点正常,只需调整任务参数;若未包含,需重新部署修复后的ARM模板。

内容的提问来源于stack exchange,提问作者Mykola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 03:46:02