Azure Web App部署日志内Azure DevOps Pipeline链接错误,点击出现404
Azure Web App部署日志链接跳转Azure DevOps Pipeline报404错误
问题描述
Azure Web App部署可正常完成,但在Azure门户部署中心点击指向Azure DevOps Pipeline的链接查看构建/部署详情时,出现404页面未找到错误。
环境配置
- 部署类型:使用Azure DevOps单个YAML Pipeline同时完成构建与发布,部署任务包含应用构建及直接部署至Azure Web App。
- YAML Pipeline部署步骤简化版:
parameters: path_to_project: '' net_version: '' artifact_name: '' azure_subscription: '' steps: - task: UseDotNet@2 condition: ne('${{ parameters.net_version }}', 'globalJson') inputs: version: '${{ parameters.net_version }}' - task: NuGetAuthenticate@1 displayName: 'Authenticate to NuGet' - task: DotNetCoreCLI@2 displayName: 'Build' inputs: command: 'build' projects: '${{ parameters.path_to_project }}' arguments: '' - task: DotNetCoreCLI@2 displayName: 'Publish' inputs: command: 'publish' projects: '${{ parameters.path_to_project }}' publishWebProjects: false arguments: '--output $(Build.ArtifactStagingDirectory)' - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact' inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: '${{ parameters.artifact_name }}' - task: DownloadBuildArtifacts@0 displayName: 'Download Artifact' inputs: artifactName: ${{ parameters.artifact_name }} downloadPath: '$(System.ArtifactsDirectory)/${{ parameters.artifact_name }}' - task: AzureWebApp@1 inputs: azureSubscription: ${{ parameters.azure_subscription }} appType: webApp appName: ${{ parameters.app_name }} package: '$(System.ArtifactsDirectory)/**/*.zip' deploymentMethod: 'auto'
观察结果
- 采用分离的构建和发布流水线的应用,部署日志中的链接可正常跳转至对应流水线;
- 使用单个YAML Pipeline部署的应用,部署日志中的链接存在错误,点击后Azure DevOps显示“页面未找到”。
相关截图


解决方案
该问题核心原因是单YAML Pipeline场景下,AzureWebApp@1任务默认尝试关联发布流水线ID,但单流水线仅存在构建ID,导致链接指向不存在的资源。以下是三种可行修复方式:
方式1:移除冗余构件步骤,直接使用构建产物部署
单流水线无需先发布再下载构件,直接使用$(Build.ArtifactStagingDirectory)下的产物部署,同时显式指定部署方式为zipDeploy避免自动模式的潜在问题:
# 移除冗余步骤 # - task: PublishBuildArtifacts@1 # - task: DownloadBuildArtifacts@0 # 修改AzureWebApp任务 - task: AzureWebApp@1 inputs: azureSubscription: ${{ parameters.azure_subscription }} appType: webApp appName: ${{ parameters.app_name }} package: '$(Build.ArtifactStagingDirectory)/**/*.zip' deploymentMethod: 'zipDeploy'
方式2:显式指定资源上下文参数
若必须保留构件发布/下载流程,可在AzureWebApp@1任务中添加resourceGroup和resourceName参数,确保链接关联正确的构建流水线:
- task: AzureWebApp@1 inputs: azureSubscription: ${{ parameters.azure_subscription }} appType: webApp appName: ${{ parameters.app_name }} package: '$(System.ArtifactsDirectory)/**/*.zip' deploymentMethod: 'auto' resourceGroup: '你的资源组名称' resourceName: '你的Web App名称'
方式3:升级至AzureWebApp@2任务(推荐)
AzureWebApp@2任务对单流水线场景支持更完善,可自动正确关联构建流水线,直接替换原任务即可:
- task: AzureWebApp@2 inputs: azureSubscription: ${{ parameters.azure_subscription }} appType: webApp appName: ${{ parameters.app_name }} package: '$(Build.ArtifactStagingDirectory)/**/*.zip' deploymentMethod: 'zipDeploy'
内容的提问来源于stack exchange,提问作者Yauhen
相关产品推荐
相关产品推荐

