Freigeben über


Hosten und Bereitstellen von ASP.NET Core Blazor

Hinweis

Dies ist nicht die neueste Version dieses Artikels. Die aktuelle Version finden Sie in der .NET 9-Version dieses Artikels.

Warnung

Diese Version von ASP.NET Core wird nicht mehr unterstützt. Weitere Informationen finden Sie in der .NET- und .NET Core-Supportrichtlinie. Die aktuelle Version finden Sie in der .NET 9-Version dieses Artikels.

Wichtig

Diese Informationen beziehen sich auf ein Vorabversionsprodukt, das vor der kommerziellen Freigabe möglicherweise noch wesentlichen Änderungen unterliegt. Microsoft gibt keine Garantie, weder ausdrücklich noch impliziert, hinsichtlich der hier bereitgestellten Informationen.

Die aktuelle Version finden Sie in der .NET 9-Version dieses Artikels.

In diesem Artikel wird erläutert, wie Sie Blazor-Apps hosten und bereitstellen.

Veröffentlichen der App

Apps werden für die Bereitstellung in Releasekonfigurationen veröffentlicht.

Hinweis

Veröffentlichen Sie eine gehostete Blazor WebAssembly-Projektmappe aus dem Server-Projekt.

  1. Wählen Sie den Befehl {APPLICATION} veröffentlichen aus dem Menü Build aus. (Der Platzhalter {APPLICATION} ist der Name der App.)
  2. Wählen Sie das Veröffentlichungsziel aus. Um lokal zu veröffentlichen, wählen Sie Ordner aus.
  3. Übernehmen Sie den Standardspeicherort im Feld Ordner auswählen, oder geben Sie einen anderen Speicherort an. Wählen Sie die Schaltfläche Publish aus.

Das Veröffentlichen einer App löst eine Wiederherstellung der Abhängigkeiten des Projekts aus und erstellt das Projekt, bevor die Objekte für die Bereitstellung erstellt werden. Im Rahmen des Buildprozesses werden nicht verwendete Methoden und Assemblys entfernt, um die Downloadgröße und Ladezeiten von Apps zu reduzieren.

Standardveröffentlichungsorte

  • Blazor Web App: Die App wird im Ordner /bin/Release/{TARGET FRAMEWORK}/publish veröffentlicht, in dem der Platzhalter {TARGET FRAMEWORK} das Zielframework ist. Stellen Sie die Inhalte des Ordners publish auf dem Host bereit.
  • EigenständigBlazor WebAssembly: Die App wird im Ordner oder bin/Release/{TARGET FRAMEWORK}/publish im bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish Ordner veröffentlicht. Zum Bereitstellen der App als statische Website kopieren Sie den Inhalt des Ordners wwwroot auf den Host der statischen Website.
  • Blazor Server: Die App wird im Ordner /bin/Release/{TARGET FRAMEWORK}/publish veröffentlicht, in dem der Platzhalter {TARGET FRAMEWORK} das Zielframework ist. Stellen Sie die Inhalte des Ordners publish auf dem Host bereit.
  • Blazor WebAssembly
    • Eigenständig: Die App wird im /bin/Release/{TARGET FRAMEWORK}/publish oder bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish Ordner veröffentlicht. Zum Bereitstellen der App als statische Website kopieren Sie den Inhalt des Ordners wwwroot auf den Host der statischen Website.
    • Gehostet: Der Server ASP.NET Core-App und die Client-App Blazor WebAssembly werden zusammen mit allen statischen Webressourcen der Client-App im /bin/Release/{TARGET FRAMEWORK}/publish Ordner der Server-App veröffentlicht. Stellen Sie die Inhalte des Ordners publish auf dem Host bereit.

IIS

Informationen zum Hosten einer Blazor-App in IIS finden Sie in den folgenden Ressourcen:

Das Freigeben eines App-Pools zwischen ASP.NET Core-Apps wird nicht unterstützt, auch nicht für Blazor-Apps. Verwenden Sie beim Hosten mit IIS einen App-Pool pro App, und vermeiden Sie die Verwendung der virtuellen IIS-Verzeichnisse zum Hosten mehrerer Apps.

Eine oder mehrere Blazor WebAssembly-Apps, die von einer ASP.NET Core-App gehostet werden, eine sog. gehostete Blazor WebAssembly-Lösung, werden für einen App-Pool unterstützt. Wir empfehlen jedoch nicht, einen einzelnen App-Pool mehreren gehosteten Blazor WebAssembly-Lösungen oder Szenarien mit dem Hosting untergeordneter Anwendungen zuzuweisen, und unterstützen dies auch nicht.

Weitere Informationen zu Lösungen finden Sie unter Tools für ASP.NET Core Blazor.

Blazor Server MapFallbackToPage-Konfiguration

Dieser Abschnitt gilt nur für Blazor Server-Apps. MapFallbackToPage wird in Blazor Web Apps und Blazor WebAssembly-Apps nicht unterstützt.

Falls eine App einen separaten Bereich mit benutzerdefinierten Ressourcen und Razor-Komponenten erfordert:

  • Erstellen Sie im Ordner Pages der App einen Ordner für die Ressourcen. Der Administratorbereich einer App wird beispielsweise in einem Ordner namens Admin (Pages/Admin) erstellt.

  • Erstellen Sie eine Stammseite (_Host.cshtml) für den Bereich. Erstellen Sie beispielsweise eine Pages/Admin/_Host.cshtml-Datei aus der Hauptstammseite der App (Pages/_Host.cshtml). Geben Sie auf der @page-Seite für Administrator*innen keine _Host-Anweisung an.

  • Fügen Sie dem Ordner des Bereichs ein Layout hinzu (z. B. Pages/Admin/_Layout.razor). Legen Sie das <base>-Tag href im Layout für den separaten Bereich so fest, dass es mit dem Ordner des Bereichs übereinstimmt (z. B. <base href="/Admin/" />). Fügen Sie zu Demonstrationszwecken ~/ zu den statischen Ressourcen auf der Seite hinzu. Beispiel:

    • ~/css/bootstrap/bootstrap.min.css
    • ~/css/site.css
    • ~/BlazorSample.styles.css (der Namespace der Beispiel-App lautet BlazorSample)
    • ~/_framework/blazor.server.js (Blazor-Skript)
  • Wenn der Bereich über einen eigenen Ordner für statische Ressourcen verfügen soll, fügen Sie einen Ordner hinzu, und geben Sie dessen Speicherort in der Middleware für statische Dateien in Program.cs (z. B. app.UseStaticFiles("/Admin/wwwroot")) an.

  • Razor-Komponenten werden dem Ordner des Bereichs hinzugefügt. Fügen Sie dem Bereichsordner mindestens eine Index-Komponente mit der richtigen @page-Anweisung für den Bereich hinzu. Fügen Sie beispielsweise eine Pages/Admin/Index.razor-Datei hinzu, die auf der Pages/Index.razor-Standarddatei der App basiert. Geben Sie den Bereich Admin als Routenvorlage am Anfang der Datei an (@page "/admin"). Fügen Sie bei Bedarf zusätzliche Komponenten hinzu. Geben Sie beispielsweise Pages/Admin/Component1.razor mit einer @page-Anweisung und der Routenvorlage @page "/admin/component1 an.

  • Rufen Sie in Program.cs die Methode MapFallbackToPage für den Anforderungspfad des Bereichs unmittelbar vor dem Pfad der Fallbackstammseite auf die _Host-Seite auf:

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