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

Azure Pipeline部署.NET Core应用后wwwroot为空问题咨询

问题描述

我有一个.NET Core应用,通过Azure Pipeline部署到App Service。流水线执行成功,也生成了有效的构建工件,但通过FTP访问App Service时发现wwwroot目录为空。部署文件夹里有个新文件夹,里面是显示部署成功的日志。Azure门户的部署中心也显示部署成功,但有个奇怪的点:部署中心里的一个部署槽引用了错误分支(之前误在UI点了同步),不过关联的构建ID和提交ID是正确的,来自正确分支。部署文件夹的日志也显示部署成功,但访问应用时报错,错误日志指向C:\home\site\wwwroot\目录。

附上流水线YAML配置:

- task: UseDotNet@2
    inputs:
      version: '6.0.x'  
  
  - task: DotNetCoreCLI@2
    inputs:
      command: 'restore'
      feedsToUse: 'select'
      vstsFeed: 'thisisnumero' # 一串数字和字母
      projects: 'source/ui/code/code.sln'

  - task: DotNetCoreCLI@2 
    inputs:
      command: 'build'
      arguments: '--configuration $(buildConfiguration)'
      displayName: 'dotnet build $(buildConfiguration)'
      projects: 'source/ui/code/code.sln'
      
  - task: DotNetCoreCLI@2
    inputs:
      command: publish
      publishWebProjects: True
      arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
      zipAfterPublish: True

  - task: PublishPipelineArtifact@1
    inputs:
      targetPath: '$(Build.ArtifactStagingDirectory)' 
      artifactName: 'code'

  - task: AzureWebApp@1
    inputs:
      azureSubscription: 'V2B Web App Configurator'
      #appType: 'webAppLinux'
      appName: 'videotobricks'
      package: '$(Build.ArtifactStagingDirectory)/**/*.zip'
排查与解决方案

1. 确认FTP访问的目标槽是否正确

你提到部署槽引用了错误分支,但构建ID正确。先检查你FTP连接的路径:生产槽的路径是site/wwwroot,而部署槽的路径是site/slots/[槽名]/wwwroot,很可能是你误访问了那个同步错误的部署槽,而非生产槽。

2. 显式指定AzureWebApp任务的部署槽

你的YAML未指定deployToSlotOrASE参数,默认部署到生产槽,但手动同步操作可能导致槽状态异常。建议显式指定部署目标为生产槽,避免歧义:

- task: AzureWebApp@1
  inputs:
    azureSubscription: 'V2B Web App Configurator'
    appName: 'videotobricks'
    package: '$(Build.ArtifactStagingDirectory)/**/*.zip'
    deployToSlotOrASE: true
    slotName: 'production' # 明确指定生产槽

3. 修正dotnet publish的项目指向

publishWebProjects: True会自动识别解决方案中的Web项目,但如果存在多个项目,可能出现识别错误。建议显式指定Web项目的csproj路径:

- task: DotNetCoreCLI@2
  inputs:
    command: publish
    projects: 'source/ui/code/[你的Web项目名称].csproj' # 替换为实际Web项目路径
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    zipAfterPublish: True

同时可以查看构建阶段的dotnet publish日志,确认是否有正确生成Web应用文件到指定目录。

4. 检查App Service部署中心配置

在Azure门户的部署中心,确认部署方式为Azure Pipelines,而非本地Git、FTP等其他方式。点击部署历史中的对应记录,查看详细日志,确认文件是否被实际复制到wwwroot目录。

5. 清理异常部署槽并重新部署

那个误同步的部署槽可能干扰了生产槽的状态,尝试删除该槽后重新运行流水线,再检查wwwroot目录内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:05:29