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

使用GitHub Actions部署DDD架构Blazor WASM到Azure静态Web应用失败

解决Azure静态Web Apps部署Blazor WASM时找不到默认文件的问题

问题分析

你遇到的两个错误核心都是构建输出路径配置错误:

  1. 初始错误:Azure在app_location(src/PDANV.Blazor.Client)下直接找wwwroot,但这个目录是项目源码里的静态资源目录,不是Blazor构建后的输出目录,构建产物默认会放到bin/Release/net[版本号]/wwwroot下。
  2. 修改后的错误:你把output_location设为绝对路径src/PDANV.Blazor.Client/wwwroot,但output_location要求是相对于app_location的相对路径,而且这个路径指向的还是源码目录,不是构建产物所在的位置。

解决方案

方案1:直接指定默认构建输出路径

Blazor WebAssembly项目默认构建后,产物会放在bin/Release/net[你的.NET版本号]/wwwroot(比如.NET 6就是bin/Release/net6.0/wwwroot)。你需要把output_location改成这个相对路径:

修改GitHub Actions工作流中的output_location配置:

app_location: "src/PDANV.Blazor.Client" # 保持不变
api_location: "src/PDANV.HttpApi" # 保持不变
output_location: "bin/Release/net6.0/wwwroot" # 替换成你的.NET版本号

方案2:自定义构建输出目录(更灵活)

如果不想硬编码.NET版本号,可以手动执行dotnet publish命令指定输出目录,再让Azure指向这个目录:

  1. 在build_and_deploy_job中添加一个构建步骤,放在actions/checkout之后,Azure/static-web-apps-deploy之前:
- name: Publish Blazor Client
  run: dotnet publish src/PDANV.Blazor.Client -c Release -o src/PDANV.Blazor.Client/dist
  1. 修改output_location为自定义的输出目录:
output_location: "dist"

修改后的完整build_and_deploy_job示例:

jobs:
  build_and_deploy_job:
    if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
    runs-on: ubuntu-latest
    name: Build and Deploy Job
    steps:
      - uses: actions/checkout@v3
        with:
          submodules: true
          lfs: false
      - name: Publish Blazor Client
        run: dotnet publish src/PDANV.Blazor.Client -c Release -o src/PDANV.Blazor.Client/dist
      - name: Build And Deploy
        id: builddeploy
        uses: Azure/static-web-apps-deploy@v1
        with:
          azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          action: "upload"
          app_location: "src/PDANV.Blazor.Client"
          api_location: "src/PDANV.HttpApi"
          output_location: "dist"

关键注意事项

  • app_location:指向Blazor客户端项目的根目录(源码目录),这个配置是正确的。
  • output_location:必须是相对于app_location的相对路径,指向构建完成后包含index.html的目录。
  • 如果你有API项目(PDANV.HttpApi),确保它的构建输出符合Azure Static Web Apps的要求(比如函数项目的输出是bin/Release/net[版本号]/publish),如果不需要API可以留空。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 23:36:10