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

部署在Azure App Service的Blazor应用CSS无法加载问题求助

问题概述
  • 将Blazor应用部署到Azure App Service,Azure Pipelines构建与部署流程正常,站点可运行
  • 初始采用包部署时站点无法启动,报错提示找不到启动DLL;切换为zip部署后站点可启动,但CSS无法加载
  • 当前Azure上的文件夹结构:site>wwwroot(存放所有DLL)>wwwroot(存放site.styles.css)>css(存放其余CSS文件)
现有YAML配置
trigger:
- master

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Development'
  project: '"$(System.DefaultWorkingDirectory)/HR Taxonomy Change Management/HR Taxonomy Change Management.csproj"'

jobs:
- job: Build
  displayName: 'Build and Publish'
  pool:
    vmImage: 'ubuntu-latest'
    
  steps:

  - task: UseDotNet@2
    displayName: 'Install .NET Core SDK'
    inputs:
      version: '6.x'

  - task: NuGetToolInstaller@1

  - task: DotNetCoreCLI@2
    displayName: 'Restore Dependencies'
    inputs:
      command: 'restore'
      projects: "HR Taxonomy Change Management/*.csproj"
      feedsToUse: 'config'
      nugetConfigPath: nuget.config

  - task: DotNetCoreCLI@2
    displayName: 'Build'
    inputs:
      command: 'build'
      projects: "HR Taxonomy Change Management/HR Taxonomy Change Management.csproj"
      arguments: '--output $(build.artifactstagingdirectory)'
      configuration: '$(buildConfiguration)'  

  - task: DotNetCoreCLI@2
    displayName: 'Publish Project'
    inputs:
      command: 'publish'
      projects: "HR Taxonomy Change Management/HR Taxonomy Change Management.csproj"
      publishWebProjects: true
      arguments: '--configuration $(buildConfiguration) --output "$(Build.ArtifactStagingDirectory)/artifact"'
      zipAfterPublish: true

  - task: PublishPipelineArtifact@1
    displayName: 'Publish Artifact'
    inputs:
      targetPath: '$(build.artifactstagingdirectory)/artifact'
      artifactName: 'publishedApp'
      publishLocation: 'pipeline'

- job: Deploy
  displayName: 'Deploy to Azure Web App'
  dependsOn: Build
  pool:
    vmImage: 'ubuntu-latest'
  steps:
  - download: current
    artifact: 'publishedApp'

  - task: UseDotNet@2
    displayName: 'Install .NET Core SDK'
    inputs:
      version: '6.x'

  - task: CmdLine@2
    inputs:
      script: 'ls $(Agent.BuildDirectory)/publishedApp'
      workingDirectory: '$(Agent.BuildDirectory)'

  - task: AzureWebApp@1
    displayName: 'Deploy to Azure'
    inputs:
      azureSubscription: 'HR Data Governance(2442165c-339d-4e83-a443-a6583c372938)'
      appType: 'webAppLinux'
      appName: 'hrchangemanagement'
      resourceGroupName: 'HRChangeManagement'
      deploymentMethod: 'zipDeploy'
      startUpCommand: 'dotnet "HR Taxonomy Change Management.dll"'
      package: ' $(Agent.BuildDirectory)/publishedApp/*.zip'
解决建议

针对启动DLL找不到问题(包部署场景)

  • 修正启动命令路径:包部署时Azure App Service默认工作目录为site/wwwroot,若DLL存放在此目录,启动命令可简化为dotnet "HR Taxonomy Change Management.dll",需确认DLL未嵌套在二级wwwroot目录中
  • 移除重复构建输出:现有YAML中build步骤指定了--output参数,后续publish步骤又输出到新目录,易导致文件结构混乱。建议删除build步骤的--output参数,因为publish会自动完成构建流程

针对CSS无法加载问题(zip部署场景)

  • 修复双重wwwroot嵌套问题:这是发布配置导致的路径错误,修改publish任务参数确保静态资源输出层级正确:
    - task: DotNetCoreCLI@2
      displayName: 'Publish Project'
      inputs:
        command: 'publish'
        projects: "HR Taxonomy Change Management/HR Taxonomy Change Management.csproj"
        publishWebProjects: false  # 关闭自动检测,避免多项目路径冲突
        arguments: '--configuration $(buildConfiguration) --output "$(Build.ArtifactStagingDirectory)/artifact" --no-build'  # 添加--no-build避免重复构建
        zipAfterPublish: true
    
  • 检查项目静态资源配置:确保wwwroot下的CSS文件在项目属性中设置为复制到输出目录:如果较新则复制,防止发布时遗漏资源
  • 验证zip包结构:确保zip包内DLL文件与wwwroot目录处于同一层级,而非嵌套在wwwroot下

通用优化

  • 统一项目路径变量:将变量project中的转义引号移除,改为$(System.DefaultWorkingDirectory)/HR Taxonomy Change Management/HR Taxonomy Change Management.csproj,后续任务直接引用$(project)即可,减少重复路径书写
  • 移除部署阶段冗余步骤:Deploy任务中的UseDotNet@2可删除,Azure App Service已配置好.NET运行时,无需重复安装
  • 添加结构验证步骤:在Build任务末尾添加命令行任务,查看发布目录结构,确保资源层级正确:
    - task: CmdLine@2
      displayName: 'Verify Publish Structure'
      inputs:
        script: 'find $(Build.ArtifactStagingDirectory)/artifact -type f | sort'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:22:39