Blazor .NET 6 WASM部署到GitHub Pages出现校验错误如何解决
问题原因
你遇到的Blazor WASM完整性校验失败问题,确实是Git默认换行符转换规则篡改二进制文件导致的。默认配置下Git会自动识别文本文件,在提交、拉取时自动转换LF/CRLF换行符,Blazor WASM部署包中的.dll、.wasm等二进制文件如果被误识别为文本文件,内容就会被修改,与blazor.boot.json中预设的文件哈希校验值不匹配,就会触发该报错。
修复方案
- 第一步:在gh-pages分支根目录新增
.gitattributes文件,配置如下规则,明确指定二进制文件不做换行符转换:
# 声明Blazor相关二进制文件不参与换行符转换 *.dll binary *.wasm binary *.dat binary *.blat binary *.pdb binary # 可选:指定文本文件统一使用LF换行符 *.html text eol=lf *.css text eol=lf *.js text eol=lf *.json text eol=lf
- 第二步:执行以下命令清理Git本地缓存,重置文件状态,消除之前已经被错误转换的文件影响:
git rm --cached -r . git reset --hard
- 第三步:本地重新发布Blazor WASM项目,将发布生成的
wwwroot目录下所有文件,完整替换到gh-pages分支的对应路径,之后重新提交、推送代码到GitHub仓库即可。 - 临时应急方案:如果需要快速验证其他逻辑,可以临时禁用完整性校验,修改
index.html中Blazor启动逻辑如下即可,该方案不建议长期使用:
<script src="_framework/blazor.webassembly.js" autostart="false"></script> <script> Blazor.start({ loadBootResource: function (type, name, defaultUri, integrity) { // 跳过完整性校验直接拉取文件 return fetch(defaultUri); } }); </script>
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

