使用GitHub Actions部署DDD架构Blazor WASM到Azure静态Web应用失败
解决Azure静态Web Apps部署Blazor WASM时找不到默认文件的问题
问题分析
你遇到的两个错误核心都是构建输出路径配置错误:
- 初始错误:Azure在
app_location(src/PDANV.Blazor.Client)下直接找wwwroot,但这个目录是项目源码里的静态资源目录,不是Blazor构建后的输出目录,构建产物默认会放到bin/Release/net[版本号]/wwwroot下。 - 修改后的错误:你把
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指向这个目录:
- 在
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
- 修改
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
相关产品推荐
相关产品推荐

