Blazor: Aktualizovaná logika ověřování statických webových prostředků
Při ověřování konfliktů pro statické webové prostředky v ASP.NET Core 3.1 a Blazor WebAssembly 3.2 došlo k problému. Problém:
- Zabránilo řádné detekci konfliktů mezi hostitelskými prostředky a prostředky z knihoven tříd Razor Class Library (RCLs) a aplikací Blazor WebAssembly.
- Většinou ovlivňuje aplikace Blazor WebAssembly, protože ve výchozím nastavení se statické webové prostředky ve verzi RCLs obsluhují pod předponou
_content/$(PackageId)
.
Zavedená verze
5,0
Staré chování
Během vývoje můžou být statické webové prostředky seznamu RCL bezobslužně přepsány prostředky hostitelského projektu na stejné cestě hostitele. Vezměte v úvahu seznam RCL, který definoval statický webový prostředek, který se má obsluhovat ve složce /folder/file.txt. Pokud hostitel umístil soubor na adresu wwwroot/folder/file.txt, soubor na serveru bezobslužně přerodí soubor v aplikaci RCL nebo Blazor WebAssembly.
Nové chování
ASP.NET Core správně zjistí, kdy k tomuto problému dochází. Informuje vás, uživatele, o konfliktu, abyste mohli provést příslušnou akci.
Důvod změny
Statické webové prostředky nebyly určeny k přepsání soubory na hostiteli wwwroot projektu. Povolení přepsání těchto souborů může vést k chybám, které se obtížně diagnostikují. Výsledkem může být nedefinované změny chování v publikovaných aplikacích.
Doporučená akce
Ve výchozím nastavení neexistuje žádný důvod, proč by soubor RCL kolidovat se souborem na hostiteli. Soubory RCL mají předponu _content/${PackageId}
. Soubory Blazor WebAssembly jsou umístěny v kořenovém adresáři prostoru adresy URL hostitele, což usnadňuje konflikty. Například aplikace Blazor WebAssembly obsahují soubor favicon.ico , který může hostitel zahrnout také do složky wwwroot .
Pokud je zdrojem konfliktu soubor RCL, často to znamená, že kód kopíruje prostředky z knihovny do složky wwwroot projektu. Psaní kódu pro kopírování souborů porazí primární cíl statických webových prostředků. Tento cíl je zásadní pro získání aktualizací v prohlížeči, když se obsah aktualizuje, aniž by bylo nutné aktivovat novou kompilaci.
Toto chování můžete zachovat a zachovat soubor na hostiteli. Uděláte to tak, že odeberete soubor ze seznamu statických webových prostředků s vlastním cílem NÁSTROJE MSBuild.
Pokud chcete místo souboru hostitelského projektu použít soubor seznamu RCL nebo soubor aplikace Blazor WebAssembly, odeberte ho z hostitelského projektu.
Ovlivněná rozhraní API
Žádné