Sdílet prostřednictvím


Hostování a nasazení aplikací ASP.NET Core Blazor

Poznámka:

Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 10 tohoto článku.

Výstraha

Tato verze ASP.NET Core již není podporována. Pro více informací se podívejte na Zásady podpory .NET a .NET Core. Aktuální vydání tohoto článku najdete v verzi .NET 9.

Tento článek vysvětluje, jak hostovat a nasazovat aplikace Blazor.

Publikování aplikace

Aplikace se publikují pro nasazení v konfiguraci vydané verze.

Poznámka:

Publikujte hostované Blazor WebAssemblyřešení z Server projektu.

  1. V nabídce Sestavení vyberte příkaz Publikovat {APPLICATION}, kde {APPLICATION} je zástupný název aplikace.
  2. Vyberte cíl publikování. Pokud chcete publikovat místně, vyberte Složku. Vyberte Další.
  3. Při místním publikování přijměte výchozí umístění složky nebo zadejte jiné umístění. Chcete-li profil uložit, vyberte Dokončit . Vyberte Zavřít.
  4. Pokud chcete před publikováním aplikace vyčistit složku publikování cíle, vyberte Zobrazit všechna nastavení. VyberteMožnosti> publikování souboru Nastavení>Odstranit všechny existující soubory před publikováním. Vyberte Uložit.
  5. Vyberte tlačítko Publikovat.

Publikování aplikace aktivuje obnovení závislostí projektu a sestavení projektu před vytvořením prostředků pro nasazení. V rámci procesu sestavení se odeberou nepoužívané metody a sestavení, aby se snížila velikost a načítání aplikace.

Vyprázdnění cílové složky publikování

Při použití dotnet publish příkazu v příkazovém prostředí k publikování aplikace příkaz vygeneruje potřebné soubory pro nasazení na základě aktuálního stavu projektu a umístí soubory do zadané výstupní složky. Příkaz před publikováním aplikace automaticky nevyčistí cílovou složku.

Pokud chcete před publikováním aplikace automaticky vyprázdnit cílovou složku, přidejte do souboru projektu aplikace () následující cíl MSBuild (.csproj) pod kořenový <Project> prvek:

<Target Name="_RemovePublishDirBeforePublishing" BeforeTargets="BeforePublish">
  <RemoveDir Directories="$(PublishDir)" Condition="'$(PublishDir)' != ''" />
</Target>

Výchozí umístění publikování

  • Blazor Web App: Aplikace se publikuje do složky /bin/Release/{TARGET FRAMEWORK}/publish, kde zástupný symbol {TARGET FRAMEWORK} je cílová architektura. Odešlete obsah složky publish na server.
  • Samostatná Blazor WebAssemblyaplikace: Aplikace se publikuje do bin/Release/{TARGET FRAMEWORK}/publish složky nebo bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish složky. Pokud chcete nasadit aplikaci jako statický web, zkopírujte obsah wwwroot složky do hostitele statického webu.
  • Blazor Server: Aplikace se publikuje do složky /bin/Release/{TARGET FRAMEWORK}/publish, kde zástupný symbol {TARGET FRAMEWORK} je cílová architektura.. Odešlete obsah složky publish na server.
  • Blazor WebAssembly
    • Samostatná aplikace: Aplikace se publikuje do /bin/Release/{TARGET FRAMEWORK}/publish složky nebo bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish složky. Pokud chcete nasadit aplikaci jako statický web, zkopírujte obsah wwwroot složky do hostitele statického webu.
    • Hostované: Aplikační server ASP.NET Core a klientská Blazor WebAssembly aplikace jsou publikovány do /bin/Release/{TARGET FRAMEWORK}/publish složky serverové aplikace spolu se statickými webovými prostředky klientské aplikace. Odešlete obsah složky publish na server.

služba IIS

Pokud chcete hostovat aplikaci ve službě Blazor IIS, projděte si následující zdroje informací:

Sdílení fondu aplikací mezi aplikacemi ASP.NET Core se nepodporuje, včetně aplikací Blazor . Při hostování se službou IIS používejte jeden fond aplikací pro každou aplikaci a vyhněte se použití virtuálních adresářů služby IIS pro hostování více aplikací.

Jeden nebo více Blazor WebAssembly aplikací hostovaných aplikací ASP.NET Core, označované jako hostované Blazor WebAssembly řešení, se podporuje pro jeden fond aplikací. Nedoporučujeme ale ani nepodporujeme přiřazování jednoho fondu aplikací k více hostovaným Blazor WebAssembly řešením nebo v hostitelských scénářích dílčích aplikací.

Další informace o řešeních naleznete v tématu Nástroje pro ASP.NET Core Blazor.

Podpora javascriptového bundleru

Běhové prostředí Blazor spoléhá na soubory JavaScript (JS), běhové prostředí .NET zkompilované do kódu WebAssembly a spravovaná sestavení zabalená jako soubory WebAssembly. Když je Blazor aplikace sestavena, Blazor modul runtime závisí na těchto souborech z různých umístění sestavení. Vzhledem k tomuto omezení Blazornení výstup sestavení kompatibilní s JS bundlery, jako jsou Gulp, Webpack a Rollup.

Pokud chcete vytvořit výstup sestavení kompatibilní s JS bundlery během publikování, nastavte WasmBundlerFriendlyBootConfig vlastnost MSBuild do true souboru projektu aplikace:

<WasmBundlerFriendlyBootConfig>true</WasmBundlerFriendlyBootConfig>

Důležité

Tato funkce vytváří výstup kompatibilní pro bundler pouze při publikaci aplikace.

Výstup není přímo spustitelný v prohlížeči, ale nástroje ho můžou využívat JS ke sbalování JS souborů se zbytkem skriptů zadaných vývojářem.

Pokud WasmBundlerFriendlyBootConfig je povoleno, vytvořené JS obsahuje import direktivy pro všechny prostředky v aplikaci, což zviditelňuje závislosti pro bundler. Mnoho prostředků není možné načíst v prohlížeči, ale nástroje pro balíčkování je obvykle možné nakonfigurovat tak, aby rozpoznaly prostředky podle jejich typu souboru, pro zajištění načtení. Podrobnosti o tom, jak nakonfigurovat váš bundler, najdete v dokumentaci k sadě.

Poznámka:

Možnost seskupení výstupu kompilace by měla být zajištěna mapováním importů na jednotlivá místa souborů pomocí vlastního plug-inu pro balíkovač. V tuto chvíli takový modul plug-in neposkytujeme.

Poznámka:

Nahrazením pluginu files za url jsou všechny soubory aplikace JS, včetně runtime prostředí pro WebAssembly (zakódováno v base64 v Blazor), spojeny do výstupu. Velikost souboru je výrazně větší (například 300% větší), než když jsou soubory upravovány pomocí pluginu files, takže nedoporučujeme používat plugin url jako obecný postup při vytváření výstupu optimalizovaného pro zpracování bundlerem JS.

Následující ukázkové aplikace jsou založené na Rollup. Podobné koncepty se uplatní při použití jiných JS nástrojů pro balení.

Ukázkové ukázkové aplikace pro Blazor WebAssembly aplikaci React (BlazorWebAssemblyReact) a .NET na WebAssembly v aplikaci React (DotNetWebAssemblyReact) pro .NET 10 nebo novější jsou k dispozici v Blazor ukázkovém úložišti GitHub (dotnet/blazor-samples).

Aspekty Blazor WebAssembly ukládání do mezipaměti se vztahují na Blazor Web App

Blazor Pokyny pro ukládání do mezipaměti a HTTP cache v uzlu Blazor WebAssembly se zaměřují na samostatné Blazor WebAssembly aplikace, ale několik aspektů klientského cachování v těchto článcích platí také pro Blazor Web App režimy interaktivního WebAssembly nebo interaktivního automatického vykreslování. Pokud na Blazor Web App straně klienta, která vykresluje obsah, narazíte na problém se statickým prostředkem nebo problém s ukládáním balíčku do mezipaměti, projděte si pokyny v těchto článcích, které tento problém řeší.

Blazor Server MapFallbackToPage konfigurace

Tato část platí jenom pro Blazor Server aplikace. MapFallbackToPage a Blazor Web App aplikace nejsou podporovány v Blazor WebAssembly.

Ve scénářích, kdy aplikace vyžaduje samostatnou oblast s vlastními prostředky a Razor komponentami:

  • Vytvořte složku ve složce aplikace Pages pro uložení prostředků. Například oddíl správce aplikace se vytvoří v nové složce s názvem Admin (Pages/Admin).

  • Vytvořte kořenovou stránku (_Host.cshtml) pro oblast. Například vytvořte Pages/Admin/_Host.cshtml soubor z hlavní kořenové stránky aplikace (Pages/_Host.cshtml). Na stránce Správce @page nezadávejte direktivu_Host.

  • Přidejte rozložení do složky oblasti (například Pages/Admin/_Layout.razor). V rozložení pro samostatnou oblast nastavte <base> značku href tak, aby odpovídala složce oblasti (například <base href="/Admin/" />). Pro demonstrační účely přidejte na stránce statické prostředky ~/. Například:

    • ~/css/bootstrap/bootstrap.min.css
    • ~/css/site.css
    • ~/BlazorSample.styles.css (obor názvů ukázkové aplikace je BlazorSample)
    • ~/_framework/blazor.server.js (Blazor skript)
  • Pokud má oblast mít vlastní složku statických souborů, přidejte složku a zadejte její umístění k middlewaru pro statické soubory (například Program.cs, app.UseStaticFiles("/Admin/wwwroot")).

  • Do složky oblasti jsou přidány komponenty Razor. Minimálně přidejte komponentu Index do složky oblasti se správnou @page direktivou pro danou oblast. Můžete například přidat Pages/Admin/Index.razor soubor na základě výchozího Pages/Index.razor souboru aplikace. Označte oblast Správce jako šablonu trasy v horní části souboru (@page "/admin"). Podle potřeby přidejte další komponenty. Například Pages/Admin/Component1.razor s příkazem @page a šablonou trasy @page "/admin/component1.

  • V Program.cs, zavolejte MapFallbackToPage pro cestu požadavku oblasti bezprostředně před cestou kořenové stránky záložky na stránku _Host.

    ...
    app.UseRouting();
    
    app.MapBlazorHub();
    app.MapFallbackToPage("~/Admin/{*clientroutes:nonfile}", "/Admin/_Host");
    app.MapFallbackToPage("/_Host");
    
    app.Run();