.NET6 ASP .NET CoreのBlazor WebAssemblyをホスティングする際に昨年から何度も同じ原因でハマって原因の特定に時間を要したので、備忘録として残しておきます。
事象
Blazor WebAssembly をホスティング環境にデプロイし、表示確認を行うため、アクセスすると、ブラウザのコンソールに下記のようなエラーが出力され、真っ白い画面のままブラウザがグルグル状態でフリーズします。
Failed to find a valid digest in the 'integrity' attribute for resource 'https://hostname/_framework/dotnet.timezones.blat' with computed SHA-256 integrity 'ハッシュ値'. The resource has been blocked.
GitLab等でデプロイファイルを管理している場合に.NETのバージョンアップがあった直後に発生しやすい印象です。
原因
読み込まれなった原因はブラウザのデバック情報から「dotnet.timezone.blat」が改ざんされ、ハッシュ値が変わっていることを突き止めました。
\_framework\dotnet.timezone.blatに対して圧縮した下記のファイルがハッシュ値で紐づけされていますが、GitLab等で管理している際に dotnet.timezone.blat 内の一部が書き換わることにより、ハッシュ値が合わない状態となります。
- dotnet.timezone.blat.gz
- dotnet.timezone.blat.br
対処方法
以下のどちらかの対応で問題なく表示するようになります。
- 改ざんされる前の dotnet.timezone.blat を配置する。
- dotnet.timezone.blat.gzとdotnet.timezone.blat.brを削除する。
なお、自動化するには、コマンドをビルドの後段で実行することで対応できます。
del $(build.artifactstagingdirectory)\wwwroot\_framework\dotnet.timezones.blat.gz
del $(build.artifactstagingdirectory)\wwwroot\_framework\dotnet.timezones.blat.br