.NET 8托管Blazor WASM PWA中blazor.boot.json完整性校验失败
.NET 8 Blazor WASM PWA版本更新通知不稳定且blazor.boot.json完整性校验失败
我正在开发一个.NET 8 Blazor WASM PWA项目,已重构原名为“hosted”的旧模板,并配置了版本更新通知功能,但该功能表现极不稳定:
- 部署更新后,有时能立即触发更新通知,有时需等待数分钟至数小时,甚至完全无通知
- 未触发通知时,控制台会抛出完整性校验错误:
Failed to find a valid digest in the 'integrity' attribute for resource 'https://<my domain.com>/_framework/blazor.boot.json' with computed SHA-256 integrity 'i7j4OTqlUgpP/raiyVyl7zPhawvQWu4qtBIcCivBopA='. The resource has been blocked.
与常见情况不同,本次校验失败的是blazor.boot.json本身(通常是该文件存储的其他文件哈希不匹配导致问题)。此外,尽管.NET 8已将编译文件从.dll改为.wasm以规避此类缓存问题,异常仍会出现。
目前已做如下排查:
- 问题看似与缓存相关,但浏览器控制台显示该文件带有禁止缓存的响应头,且并未从浏览器缓存加载
- 不清楚blazor.boot.json的哈希是与哪个值对比导致的不匹配
- 部署环境为Hetzner VPS上的Caprover,使用与Visual Studio生成的近乎一致的Dockerfile部署;采用Cloudflare做DNS,缓存设置为“尊重现有头”,甚至尝试过禁用缓存的开发模式,且未开启Cloudflare代理
- 本地调试无任何问题,仅生产环境出现该异常
- 清除浏览器缓存后重新加载可正常获取最新文件,但无法要求用户手动执行此操作
- 尝试过删除bin和obj文件夹,但Caprover部署时会重新生成这些文件,该操作无效
- 因需部署更新才能复现问题,无法提供最小可复现示例
内容的提问来源于stack exchange,提问作者ms4sman
相关产品推荐
相关产品推荐

