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

Azure DevOps部署ASP.NET Core 8 MVC后变更未生效问题排查

Azure DevOps部署ASP.NET Core 8 MVC到Azure Web App后不显示最新变更问题

问题描述

通过Azure DevOps将ASP.NET Core 8 MVC应用部署至Azure Web App,流水线运行无报错,但线上站点未显示最新变更,提交记录正确且构建工件生成正常。

流水线YAML核心内容

trigger:
    - master
    
pool:
  vmImage: 'windows-latest'

variables:
  - name: solution
    value: '**/*.sln'
  - name: buildConfiguration
    value: 'Release'
  - name: outputPath
    value: '$(build.artifactStagingDirectory)/WebApp'
  - name: webAppZip
    value: 'WebApp_$(Build.BuildNumber).zip'

steps:
- task: DotNetCoreCLI@2
  displayName: 'Build the project'
  inputs:
    command: 'build'
    projects: '$(solution)'
    arguments: '--configuration $(buildConfiguration) --no-restore'

- task: DotNetCoreCLI@2
  displayName: 'Publish ASP.NET Core MVC project'
  inputs:
    command: 'publish'
    projects: '**/*.csproj'
    arguments: '--configuration $(buildConfiguration) --output $(outputPath) --no-restore'

- task: ArchiveFiles@2
  displayName: 'Zip publish folder for deployment'
  inputs:
    rootFolderOrFile: '$(outputPath)'
    archiveFile: '$(outputPath)/$(webAppZip)'

- task: AzureCLI@2
  displayName: 'Enable cleanup of old files'
  inputs:
    azureSubscription: 'Your-Service-Connection'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      az webapp config set \
        --name QA-app\
        --resource-group app \
        --generic-configurations "{\"WEBSITE_CLEANUP_FILES\":\"1\"}"

- task: AzureWebApp@1
  displayName: 'Deploy to Azure Web App'
  inputs:
    azureSubscription: 'Your-Service-Connection'
    appType: 'webApp'
    appName: 'Your-App-Name'
    package: '$(outputPath)/$(webAppZip)'
    deploymentMethod: zipDeploy

已尝试的排查步骤

  • 验证ZIP包内包含更新后的文件
  • 确认appsettings.json已正确转换
  • 部署后手动重启应用
  • 验证发布的工件包含新文件

可能的原因及解决方法

1. 部署目标应用名称不匹配

AzureCLI@2任务中配置清理的是名为QA-app的应用,但AzureWebApp@1任务部署的是Your-App-Name,两者名称不一致。如果线上站点是QA-app,实际部署的是另一个未被访问的应用;如果站点是Your-App-Name,清理配置未生效到目标应用,旧文件残留会导致显示旧内容。

解决方法:将两个任务中的appName统一为实际要部署的应用名称。

2. ZIP打包路径错误导致文件嵌套

ArchiveFiles@2任务的rootFolderOrFile设为$(outputPath),archiveFile设为$(outputPath)/$(webAppZip),会导致ZIP包内包含WebApp文件夹,而Azure Web App的zip部署要求网站文件位于ZIP根目录,部署后新文件因嵌套无法被识别。

解决方法:修改ArchiveFiles@2配置,确保打包内容位于ZIP根目录:

- task: ArchiveFiles@2
  displayName: 'Zip publish folder for deployment'
  inputs:
    rootFolderOrFile: '$(outputPath)'
    archiveFile: '$(build.artifactStagingDirectory)/$(webAppZip)'
    includeRootFolder: false

3. WEBSITE_CLEANUP_FILES配置的引号转义错误

AzureCLI@2的bash脚本中使用"转义引号,会导致JSON格式错误,无法正确设置清理配置,旧文件未被删除从而覆盖新内容。

解决方法:改用单引号包裹JSON内容,避免转义问题:

az webapp config set \
  --name QA-app\
  --resource-group app \
  --generic-configurations '{"WEBSITE_CLEANUP_FILES":"1"}'

4. Publish任务匹配过多项目

DotNetCoreCLI@2的publish任务使用**/*.csproj会匹配解决方案中所有项目(如测试项目),可能导致其他项目文件覆盖或干扰主MVC应用的文件。

解决方法:指定具体的Web项目csproj路径,例如:

projects: '**/YourMvcWebProject.csproj'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:31:00