Megosztás a következőn keresztül:


ASP.NET Core Blazor hoszt és üzembe helyezése

Jegyzet

Ez nem a cikk legújabb verziója. Az aktuális kiadásról a cikk .NET 10-es verziójában olvashat.

Figyelmeztetés

A ASP.NET Core ezen verziója már nem támogatott. További információ: .NET és .NET Core támogatási szabályzat. A jelenlegi kiadáshoz lásd ennek a cikknek a .NET 9-es verzióját.

Ez a cikk bemutatja, hogyan üzemeltethet és helyezhet üzembe Blazor alkalmazásokat.

Az alkalmazás közzététele

Az alkalmazásokat kiadási konfigurációban publikálják az üzembe helyezésre.

Jegyzet

Üzemeltetett Blazor WebAssemblymegoldás közzététele a Server projektből.

  1. Válassza ki az Publish {APPLICATION} parancsot a Build menüből, ahol a {APPLICATION} helyőrző az alkalmazás nevét.
  2. Válassza ki a közzétételi célt. Helyi közzétételhez válassza Mappalehetőséget. Válassza a Következőlehetőséget.
  3. Helyi közzétételkor fogadja el az alapértelmezett mappahelyet, vagy adjon meg egy másik helyet. Kattintson a Befejezés gombra a profil mentéséhez. Válassza a Bezárás lehetőséget.
  4. Ha az alkalmazás közzététele előtt meg szeretné tisztítani a cél közzétételi mappáját, válassza az Összes beállítás megjelenítése lehetőséget. Válassza a Beállítások>fájl-közzétételi beállítások lehetőséget>Az összes meglévő fájl törlése a közzététel előtt. Válassza az Mentésgombot.
  5. Válassza a Közzététel gombot.

Az alkalmazás közzététele aktiválja a projekt függőségeinek visszaállítását, és létrehozza a projektet, mielőtt az üzembe helyezéshez szükséges eszközöket létrehozná. A buildelési folyamat részeként a nem használt metódusok és szerelvények el lesznek távolítva az alkalmazás letöltési méretének és betöltési idejének csökkentése érdekében.

A cél közzétételi mappa kiürítése

Amikor a dotnet publish parancsot egy parancshéjban egy alkalmazás közzétételére használja, a parancs létrehozza az üzembe helyezéshez szükséges fájlokat a projekt aktuális állapota alapján, és a fájlokat a megadott kimeneti mappába helyezi. A parancs nem törli automatikusan a célmappát az alkalmazás közzététele előtt.

Ha az alkalmazás közzététele előtt automatikusan ki szeretné üríteni a célmappát, adja hozzá a következő MSBuild-célt az alkalmazás projektfájljába (.csproj) a gyökérelem <Project> alatt:

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

Alapértelmezett közzétételi helyek

  • Blazor Web App: Az alkalmazás a /bin/Release/{TARGET FRAMEWORK}/publish mappába kerül, ahol a {TARGET FRAMEWORK} helyőrző a cél keretrendszert jelöli. Helyezze üzembe a publish mappa tartalmát a gazdagépen.
  • ÖnállóBlazor WebAssembly: Az alkalmazás közzé van téve a bin/Release/{TARGET FRAMEWORK}/publish vagy bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish mappába. Az alkalmazás statikus webhelyként való üzembe helyezéséhez másolja a wwwroot mappa tartalmát a statikus tárhelyre.
  • Blazor Server: Az alkalmazás a /bin/Release/{TARGET FRAMEWORK}/publish mappába kerül, ahol a {TARGET FRAMEWORK} helyőrző a cél keretrendszer. Helyezze üzembe a publish mappa tartalmát a gazdagépen.
  • Blazor WebAssembly
    • Önálló: Az alkalmazás a /bin/Release/{TARGET FRAMEWORK}/publish vagy a bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish mappába van közzétéve. Az alkalmazás statikus webhelyként való üzembe helyezéséhez másolja a wwwroot mappa tartalmát a statikus tárhelyre.
    • Üzemeltetve: Az ASP.NET Core kiszolgálóalkalmazás és az ügyfélalkalmazás Blazor WebAssembly a kiszolgálóalkalmazás /bin/Release/{TARGET FRAMEWORK}/publish mappájába van publikálva, valamint az ügyfélalkalmazás bármely statikus webeszköze. Helyezze üzembe a publish mappa tartalmát a gazdagépen.

IIS

Ha egy Blazor-alkalmazást szeretne üzemeltetni az IIS-ben, tekintse meg a következő erőforrásokat:

Az alkalmazáskészlet megosztása ASP.NET Core-alkalmazások között nem támogatott, beleértve Blazor alkalmazásokat is. Alkalmazásonként egy alkalmazáskészletet használjon az IIS-vel való üzemeltetéskor, és kerülje az IIS virtuális könyvtárainak használatát több alkalmazás üzemeltetéséhez.

Egy vagy több alkalmazás, amelyek egy ASP.NET Core-alkalmazás által üzemeltetett megoldásrészei, egy alkalmazásmedence támogatott. Azonban nem javasoljuk vagy támogatjuk, hogy egy alkalmazáskészletet több üzemeltetett Blazor WebAssembly megoldáshoz vagy al-alkalmazás-üzemeltetési forgatókönyvekhez rendeljen.

A megoldásokkalkapcsolatos további információkért lásd: ASP.NET Core Blazoreszközkészlete.

JavaScript bundler-támogatás

A Blazor futtatókörnyezet a JavaScript-(JS) fájlokra, a WebAssembly-kódba lefordított .NET-futtatókörnyezetre és a WebAssembly-fájlokként csomagolt felügyelt szerelvényekre támaszkodik. Blazor Az alkalmazások létrehozásakor a Blazor futtatókörnyezet a különböző buildelési helyekről származó fájloktól függ. A Blazor-ra vonatkozó korlátozás miatt a build kimenete nem kompatibilis a kötegelő rendszerekkel, például a JS, a Webpack és a Rollup rendszerekkel.

Ha JS a kötegelőkkel kompatibilis buildkimenetet szeretne létrehozni, állítsa az WasmBundlerFriendlyBootConfig MSBuild tulajdonságot true az alkalmazás projektfájljába:

<WasmBundlerFriendlyBootConfig>true</WasmBundlerFriendlyBootConfig>

Fontos

Ez a funkció csak a kötegelőbarát kimenetet hozza létre az alkalmazás közzétételekor.

A kimenet közvetlenül nem futtatható a böngészőben, de a JS eszközök felhasználhatják a fájlokat a többi fejlesztő által biztosított szkripttel való kötegeléshez JS.

Ha WasmBundlerFriendlyBootConfig engedélyezve van, a létrehozott JS parancs az alkalmazás összes eszközére vonatkozó irányelveket tartalmaz import , ami láthatóvá teszi a függőségeket a kötegelő számára. Sok erőforrás nem tölthető be a böngészőben, de a csomagoló eszközök általában úgy konfigurálhatók, hogy fájltípusuk alapján felismerjék az erőforrásokat a betöltés kezelésére. A kötegelő konfigurálásáról további információt a kötegelő dokumentációjában talál.

Jegyzet

A buildkimenet összekapcsolása úgy lehetséges, hogy az importálást egy egyéni bundler beépülő modullal megfelelteti az JS egyes fájlhelyekre. Jelenleg nem biztosítunk ilyen beépülő modult.

Jegyzet

A files beépülő modul url lecserélésekor az alkalmazás összes JS fájlja, beleértve a Blazor-WebAssembly futtatókörnyezetet (amely a JS base64-be van kódolva), be van csomagolva a kimenetbe. A fájl mérete jelentősen nagyobb (például 300% nagyobb), mint amikor a fájlokat a files beépülő modullal összeállítják, ezért nem javasoljuk, hogy a url beépülő modult általános gyakorlatként használja, amikor bundler-barát kimenetel előállítása a JS kötegelő feldolgozáshoz.

Az alábbi mintaalkalmazások a Rollup-on alapulnak. Hasonló fogalmak vonatkoznak más JS kötegelők használatakor is.

A .NET 10-hez vagy újabb verziókhoz készült React-alkalmazásokban (Blazor WebAssembly) és a WebAssemblyen futó .NET-alkalmazásokban (BlazorWebAssemblyReact) elérhető bemutató mintaalkalmazások DotNetWebAssemblyReact a Blazor GitHub-adattárban (dotnet/blazor-samples).

A gyorsítótárazás szempontjai az Blazor WebAssembly s-ekre vonatkoznak Blazor Web App

Blazor A köteg gyorsítótárazása és a HTTP-gyorsítótárazási útmutató a Blazor WebAssembly csomópontra összpontosít önálló Blazor WebAssembly alkalmazások esetében, de az ügyféloldali gyorsítótárazás több aspektusa is alkalmazható azokra a Blazor Web App-ekre, amelyek interaktív WebAssembly vagy interaktív automatikus renderelési módokat használnak. Ha egy Blazor Web App, amely tartalmat renderel kliensoldalon, statikus erőforrással vagy kötegek gyorsítótárazásával kapcsolatos problémába ütközik, a probléma elhárításához tekintse meg az ezekben a cikkekben található útmutatást.

Blazor Server MapFallbackToPage konfiguráció

Ez a szakasz csak Blazor Server alkalmazásokra vonatkozik. A(z) MapFallbackToPage nem támogatott a Blazor Web Appés Blazor WebAssembly alkalmazásokban.

Olyan helyzetekben, amikor egy alkalmazáshoz külön terület szükséges egyéni erőforrásokkal és Razor összetevőkkel:

  • Hozzon létre egy mappát az alkalmazás Pages mappájában az erőforrások tárolásához. Egy alkalmazás rendszergazdai szakasza például egy új, Admin (Pages/Admin) nevű mappában jön létre.

  • Hozzon létre egy gyökérlapot (_Host.cshtml) a területhez. Hozzon létre például egy Pages/Admin/_Host.cshtml fájlt az alkalmazás fő gyökéroldaláról (Pages/_Host.cshtml). Ne adjon meg @page irányelvet az adminisztrációs _Host oldalon.

  • Adjon hozzá egy elrendezést a terület mappájához (például Pages/Admin/_Layout.razor). A különálló terület elrendezésében állítsa be a <base> címke href értékét a terület mappájával megegyezőre (például <base href="/Admin/" />). Bemutató céljából adja hozzá a ~/-t az oldal statikus erőforrásaihoz. Például:

    • ~/css/bootstrap/bootstrap.min.css
    • ~/css/site.css
    • ~/BlazorSample.styles.css (a példaalkalmazás névtere BlazorSample)
    • ~/_framework/blazor.server.js (Blazor szkript)
  • Ha a területnek saját statikus eszközmappával kell rendelkeznie, adja hozzá a mappát, és adja meg a helyét a Static File Middleware-ben Program.cs (például app.UseStaticFiles("/Admin/wwwroot")).

  • Razor a terület mappájába kerülnek az összetevők. Minimum adjon hozzá egy Index összetevőt a területmappához a terület megfelelő @page irányelvével. Adjon hozzá például egy Pages/Admin/Index.razor fájlt az alkalmazás alapértelmezett Pages/Index.razor fájlja alapján. Jelölje meg a rendszergazdai területet útvonalsablonként a fájl tetején (@page "/admin"). Szükség szerint adjon hozzá további összetevőket. Például Pages/Admin/Component1.razor@page irányelvvel és @page "/admin/component1 útvonalsablonjával.

  • Program.csesetén a terület kérési útvonalának hívása a MapFallbackToPage használatával történjen, közvetlenül a tartalék gyökér oldal útvonala előtt, a _Host lapra:

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