Sdílet prostřednictvím


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.

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é