NET8+Blazor网站部署后出现integrity校验失败及资源获取错误求助
核心原因
该问题源于Blazor WASM的资源哈希(integrity值)与实际部署的资源不匹配——部署过程中可能缓存了旧的资源哈希,或构建/部署环节出现资源不一致情况。
具体解决步骤
清理构建缓存并重新发布
本地执行dotnet clean清理项目构建缓存,再重新构建发布:dotnet publish -c Release;同时删除托管服务商上的旧部署文件,确保用新构建产物完全替换,避免增量覆盖残留旧文件。临时调整缓存策略(紧急修复)
若托管平台静态资源缓存导致问题,可临时修改wwwroot/_framework/blazor.boot.json,注释掉integrity相关配置;或在托管平台设置中,将_framework目录下文件的缓存策略设为无缓存,问题修复后再恢复原有配置。检查CI/CD部署流程
确保PR合并后的构建是全新构建,禁用CI工具(如GitHub Actions、Azure DevOps)中的构建缓存,或在构建前添加清理步骤;同时验证部署脚本是否完整同步了publish目录下的所有文件,尤其是_framework内的.wasm、.js、.json文件,这类文件的哈希值绑定,必须同步更新。刷新CDN/边缘缓存
若网站使用CDN或托管服务商的边缘缓存,手动触发缓存刷新,清除旧资源缓存,确保用户能获取最新文件。验证构建产物完整性
本地发布后,查看wwwroot/_framework/blazor.boot.json中dotnet.native.wasm对应的integrity值,与实际文件的SHA-256哈希对比:- Windows终端执行
certutil -hashfile dotnet.native.wasm SHA256 - Mac/Linux终端执行
shasum -a 256 dotnet.native.wasm
将计算结果转换为Base64格式后,和配置文件中的值对比,确保一致。
- Windows终端执行
内容的提问来源于stack exchange,提问作者Enrico

