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

Blazor WASM部署Azure静态Web应用时遇完整性校验问题

解决Blazor WASM部署Azure静态Web应用的完整性错误及部署失败问题

问题根源

  1. 完整性错误:你的staticwebapp.config.json放在Blazor项目的wwwroot目录下,dotnet publish时会将其纳入Blazor WASM的资源清单(_framework/blazor.boot.json)并生成integrity哈希。但Azure静态Web应用会读取这个配置文件,导致实际文件内容或传输过程中与哈希不匹配,触发浏览器的完整性校验拦截。
  2. 部署失败:之前调整app_location和output_location时,未同步调整配置文件的位置及发布逻辑,导致Azure无法正确识别静态内容或配置文件。

分步解决方案

1. 调整配置文件位置

将staticwebapp.config.json从Blazor项目的wwwroot目录,移动到Web项目的根目录(与Web.csproj同级)。

2. 修改项目文件,确保配置文件被发布

编辑Web.csproj,添加以下内容,确保publish时将配置文件复制到输出目录的根:

<ItemGroup>
  <None Include="staticwebapp.config.json">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </None>
</ItemGroup>

3. 更新部署YAML配置

修改Azure静态Web应用的部署步骤,调整app_location和output_location:

- name: Publish Blazor Project
  run: dotnet publish ./Web/Web.csproj -c:Release --no-restore -o dist/Web --nologo

- uses: Azure/static-web-apps-deploy@v1
  with:
    azure_static_web_apps_api_token: ${{ env.AZURE_STATIC_WEB_APPS_API_TOKEN }}
    action: "upload"
    app_location: "dist/Web"          # 指向dotnet publish输出的根目录
    api_location: ""
    output_location: "wwwroot"        # 指定静态内容所在的子目录
    skip_app_build: true

原理说明

  • 把staticwebapp.config.json移出wwwroot后,它不再被Blazor视为应用资源,不会生成integrity哈希,彻底避免校验错误。
  • 通过csproj的复制任务,配置文件会被放到publish输出的根目录,Azure静态Web应用能直接读取并应用该配置。
  • 调整app_location和output_location后,Azure会正确识别dist/Web/wwwroot作为静态应用的内容目录,同时根目录的配置文件生效,解决部署失败问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 05:41:11