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

Azure App Service部署时持续自动创建子文件夹问题求助

Azure App Service部署时自动生成嵌套"b"文件夹问题排查方案

问题背景

每次部署Web应用到Azure App Service,wwwroot文件夹内都会自动创建名为“b”的子文件夹,工件压缩包被放置其中。将Web应用物理路径设为site\wwwroot\b并通过部署后脚本进入该目录解压的临时方案,在创建用于持久化数据的App_Data文件夹后,部署管道又会在现有“b”文件夹内生成新的“b”子文件夹,形成嵌套问题。

当前使用的Azure DevOps发布管道配置:

steps:
- task: AzureRmWebAppDeployment@4
  displayName: 'Azure App Service Deploy'
  inputs:
    azureSubscription: 'PAYG(guid)'
    WebAppName: AppName
    ScriptType: 'Inline Script'
    InlineScript: |
     cd b
     unzip AppName.zip
     rm AppName.zip
    enableCustomDeployment: true
    RemoveAdditionalFilesFlag: true
    AdditionalArguments: '-skip:objectName=dirPath.absolutePath=wwwroot' # 尝试强制根目录但无效
    RenameFilesFlag: false
  continueOnError: true

解决思路

1. 修正自定义部署脚本的路径逻辑

启用enableCustomDeployment后,任务默认将部署包上传到临时工作目录,而非直接到wwwroot。当前脚本的cd b逻辑是在临时目录中寻找“b”文件夹,反而会触发嵌套创建:

  • 修改脚本,直接将解压内容同步到wwwroot根目录,示例:
    # 直接解压到wwwroot
    unzip AppName.zip -d /home/site/wwwroot
    rm AppName.zip
    
    或使用更可靠的robocopy同步命令:
    robocopy . /home/site/wwwroot /E /XO
    rm AppName.zip
    

2. 移除无效的AdditionalArguments配置

-skip:objectName=dirPath.absolutePath=wwwroot不符合Kudu部署参数语法,会干扰默认路径逻辑,直接删除该配置项。

3. 关闭自定义部署,使用任务默认逻辑

如果无需自定义脚本,直接关闭enableCustomDeployment,让AzureRmWebAppDeployment@4自动完成包的解压与同步到wwwroot:

  • 删除ScriptType、InlineScript、enableCustomDeployment相关配置,任务会按默认流程部署。

4. 检查App Service部署设置

  • 进入Azure Portal的App Service → 部署中心 → 部署设置,确认无自定义部署路径配置;
  • 检查是否启用WEBSITE_RUN_FROM_PACKAGE应用设置,若启用,部署包会被挂载而非解压,可能导致路径异常,可临时关闭测试。

5. 排查部署包本身结构

确认CI生成的AppName.zip内部是否自带“b”文件夹结构。如果包本身包含该嵌套,部署时会同步到wwwroot,需调整CI构建步骤,确保构建输出直接打包,无多余嵌套文件夹。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 11:40:03