問題 §
Blazer WebAsemblyのアプリをクラウドに配置していたが、ある時突然動かなくなった。
WebブラウザからF12キーで開発ツールを開いてコンソールを見ると、integrity チェックで失敗している。
エラーメッセージ §
Failed to find a valid digest in the 'integrity' attribute for resource 'https://wangf.azurewebsites.net/_framework/Newtonsoft.Json.dll' with computed SHA-256 integrity 'cs8pHUurDt0IqbB8YXPh560au3q3J/1wRL9jBddRVmE='. The resource has been blocked.
原因 §
不明
(どこかでハッシュ値をキャッシュしているらしいが、それが狂う場合があるらしい)
対策 §
Blazer WebAssemblyのプロジェクトのcsprojファイルの<PropertyGroup>に以下の1行を追加してブートリソースのキャッシュを禁止する。
<BlazorCacheBootResources>false</BlazorCacheBootResources>
望ましい対策ではないようだが、取りあえず動く。
考察 §
開発環境は、一群の整合性のあるモジュール群を生成する。
Webシステムは上流から下流まであちこちにキャッシュ機構が存在し、転送量を最小にしようとする。
何らかの理由でキャッシュ機構が不適切に動作すると、整合性のあるファイル群の一部が更新できず、整合性が破れるのではないだろうか。
このような理由からなのか時間が経過すると状況が変化するという現象も起こる。(起こらないこともある)