Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Dies ist nicht die neueste Version dieses Artikels. Die aktuelle Version finden Sie in der .NET 10-Version dieses Artikels.
Warnung
Diese Version von ASP.NET Core wird nicht mehr unterstützt. Weitere Informationen finden Sie in der Supportrichtlinie für .NET und .NET Core. Die aktuelle Version finden Sie in der .NET 10-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.
- Wählen Sie den Befehl {APPLICATION} veröffentlichen aus dem Menü Build aus. (Der Platzhalter
{APPLICATION}ist der Name der App.) - Wählen Sie das Veröffentlichungsziel aus. Um lokal zu veröffentlichen, wählen Sie Ordner aus. Wählen Sie Weiteraus.
- Akzeptieren Sie beim lokalen Veröffentlichen den Standardordner, oder geben Sie einen anderen Ort an. Wählen Sie "Fertig stellen" aus, um das Profil zu speichern. Wählen Sie Schließen aus.
- Um den Veröffentlichungsordner des Ziels vor der Veröffentlichung der App zu bereinigen, wählen Sie "Alle Einstellungen anzeigen" aus. Wählen Sie "Einstellungen"">>" aus, um alle vorhandenen Dateien vor der Veröffentlichung zu löschen. Wählen Sie Speichern aus.
- Wählen Sie die Schaltfläche Veröffentlichen 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.
Leeren des Zielveröffentlichungsordners
Wenn Sie den dotnet publish Befehl in einer Befehlsshell zum Veröffentlichen einer App verwenden, generiert der Befehl die erforderlichen Dateien für die Bereitstellung basierend auf dem aktuellen Status des Projekts und platziert die Dateien in den angegebenen Ausgabeordner. Der Befehl bereinigt den Zielordner nicht automatisch, bevor die App veröffentlicht wird.
Um den Zielordner automatisch zu leeren, bevor die App veröffentlicht wird, fügen Sie das folgende MSBuild-Ziel zur Projektdatei der App (.csproj) unter dem Stammelement <Project> hinzu:
<Target Name="_RemovePublishDirBeforePublishing" BeforeTargets="BeforePublish">
<RemoveDir Directories="$(PublishDir)" Condition="'$(PublishDir)' != ''" />
</Target>
Standardveröffentlichungsorte
-
Blazor Web App: Die App wird im Ordner
/bin/Release/{TARGET FRAMEWORK}/publishveröffentlicht, in dem der Platzhalter{TARGET FRAMEWORK}das Zielframework ist. Stellen Sie die Inhalte des Ordnerspublishauf dem Host bereit. - Selbstständig Blazor WebAssembly: Die App wird im Ordner
bin/Release/{TARGET FRAMEWORK}/publishoderbin/Release/{TARGET FRAMEWORK}/browser-wasm/publishveröffentlicht. Zum Bereitstellen der App als statische Website kopieren Sie den Inhalt des Ordnerswwwrootauf den Host der statischen Website.
-
Blazor Server: Die App wird im Ordner
/bin/Release/{TARGET FRAMEWORK}/publishveröffentlicht, in dem der Platzhalter{TARGET FRAMEWORK}das Zielframework ist. Stellen Sie die Inhalte des Ordnerspublishauf dem Host bereit. - Blazor WebAssembly
- Eigenständig: Die App wird im
/bin/Release/{TARGET FRAMEWORK}/publishoderbin/Release/{TARGET FRAMEWORK}/browser-wasm/publishOrdner veröffentlicht. Zum Bereitstellen der App als statische Website kopieren Sie den Inhalt des Ordnerswwwrootauf 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}/publishOrdner der Server-App veröffentlicht. Stellen Sie die Inhalte des Ordnerspublishauf dem Host bereit.
- Eigenständig: Die App wird im
IIS
Informationen zum Hosten einer Blazor-App in IIS finden Sie in den folgenden Ressourcen:
- IIS-Hosting
- Veröffentlichen einer ASP.NET Core-App in IIS
- Hosten Sie ASP.NET Core unter Windows mit IIS
- Hosten und Bereitstellen von serverseitigen ASP.NET Core Blazor Apps: Blazor Web Apps (.NET 8 oder höher) und Blazor Server Apps (.NET 7 oder früher), die auf IIS ausgeführt werden, einschließlich IIS mit Azure Virtual Machines (VMs) auf dem Windows-Betriebssystem und Azure App Service.
- Hosten und Bereitstellen ASP.NET Core Blazor WebAssembly mit IIS: Eigenständige Blazor WebAssembly Apps (alle .NET-Versionen) und gehostete Blazor WebAssembly Apps (.NET 7 oder früher).
- IIS-Hosting untergeordneter Anwendungen
- Folgen Sie den Anleitungen für den App-Basispfad vor der Veröffentlichung der App. In den Beispielen wird der App-Basispfad
/CoolAppverwendet und gezeigt, wie Sie den Basispfad aus App-Einstellungen oder anderen Konfigurationsanbietern abrufen. - Folgen Sie der Anleitung zum Konfigurieren untergeordneter Anwendungen unter Erweiterte Konfiguration. Der Ordnerpfad der untergeordneten App unter der Stammwebsite wird zum virtuellen Pfad der untergeordneten App. Bei einem App-Basispfad wie
/CoolAppwird die Blazor-App in einem Ordner mit dem NamenCoolAppunter der Stammwebsite platziert, und die untergeordnete App verwendet einen virtuellen Pfad (/CoolApp).
- Folgen Sie den Anleitungen für den App-Basispfad vor der Veröffentlichung der App. In den Beispielen wird der App-Basispfad
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.
JavaScript-Bundlerunterstützung
Die Blazor Laufzeit basiert auf JavaScript-Dateien (JS), der .NET-Laufzeit, die in WebAssembly-Code kompiliert wurde, und verwalteten Assemblys, die als WebAssembly-Dateien verpackt sind. Wenn eine Blazor-Anwendung erstellt wird, ist die Blazor-Laufzeit auf diese Dateien aus verschiedenen Buildorten angewiesen. Aufgrund dieser Einschränkung ist Blazordie Build-Ausgabe nicht mit JSBundlern wie Gulp, Webpack und Rollup kompatibel.
Um Buildausgaben zu erzeugen, die JS mit Bundlern beim Veröffentlichen kompatibel sind, legen Sie die MSBuild-Eigenschaft WasmBundlerFriendlyBootConfig in der Projektdatei der App auf true fest:
<WasmBundlerFriendlyBootConfig>true</WasmBundlerFriendlyBootConfig>
Wichtig
Dieses Feature erzeugt beim Veröffentlichen der App nur die bundlerfreundliche Ausgabe.
Die Ausgabe ist nicht direkt im Browser ausführbar, kann aber von JS-Tools verarbeitet werden, um JS-Dateien mit den übrigen vom Entwickler bereitgestellten Skripten zu bündeln.
Wenn WasmBundlerFriendlyBootConfig aktiviert ist, enthält die erzeugte JSimport-Anweisungen für alle Assets in der App, wodurch die Abhängigkeiten für den Bundler sichtbar werden. Viele der Ressourcen können vom Browser nicht geladen werden, aber Bundler können in der Regel so konfiguriert werden, dass sie die Ressourcen anhand ihres Dateityps erkennen, um das Laden zu verarbeiten. Ausführliche Informationen zum Konfigurieren Des Bundlers finden Sie in der Dokumentation des Bundlers.
Hinweis
Die Bündelung der Buildausgabe sollte durch Zuordnen von Importen zu einzelnen Dateispeicherorten mithilfe eines JS benutzerdefinierten Bundler-Plug-Ins möglich sein. Wir stellen derzeit kein solches Plug-In bereit.
Hinweis
Durch das Ersetzen des files-Plugins durch url werden sämtliche JS-Dateien der App, einschließlich der Blazor-WebAssembly-Laufzeit (Base64-kodiert in der JS), in die Ausgabe eingebunden. Die Größe der Datei ist erheblich größer (z. B. 300% größer), als wenn die Dateien mit dem files Plug-In zusammengestellt werden. Daher wird die Verwendung des url Plug-Ins nicht als allgemeine Methode empfohlen, wenn sie eine bundlerfreundliche Ausgabe für JS die Bundlerverarbeitung erzeugen.
Die folgenden Beispiel-Apps basieren auf Rollup. Ähnliche Konzepte gelten auch für die Verwendung anderer JS Bundler.
Beispiel-Apps für Blazor WebAssembly in einer React-App (BlazorWebAssemblyReact) und .NET auf WebAssembly in einer React-App (DotNetWebAssemblyReact) für .NET 10 oder höher sind im Blazor GitHub-Beispielrepository (dotnet/blazor-samples) verfügbar.
Aspekte der Blazor WebAssembly Zwischenspeicherung gelten für Blazor Web Apps
Blazor Anleitungen zur Zwischenspeicherung und HTTP-Zwischenspeicherung im Blazor WebAssembly Knoten konzentrieren sich auf eigenständige Blazor WebAssembly Apps, aber mehrere Aspekte der clientseitigen Zwischenspeicherung in diesen Artikeln gelten auch für Blazor Web AppFeatures, die interaktive WebAssembly- oder interaktive Auto-Rendermodi übernehmen. Wenn bei einem Blazor Web App Rendering von Inhalten auf der Clientseite ein Problem mit statischen Asset- oder Bündel-Caching auftritt, lesen Sie die Anleitungen in den folgenden Artikeln, um das Problem zu beheben.
Blazor Server
MapFallbackToPage Konfiguration
Dieser Abschnitt gilt nur für Blazor Server-Apps. MapFallbackToPage wird nicht in Blazor Web App- und Blazor WebAssembly -Apps unterstützt.
Falls eine App einen separaten Bereich mit benutzerdefinierten Ressourcen und Razor-Komponenten erfordert:
Erstellen Sie im Ordner
Pagesder App einen Ordner für die Ressourcen. Der Administratorbereich einer App wird beispielsweise in einem Ordner namensAdmin(Pages/Admin) erstellt.Erstellen Sie eine Stammseite (
_Host.cshtml) für den Bereich. Erstellen Sie beispielsweise einePages/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>-Taghrefim 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. Zum Beispiel:~/css/bootstrap/bootstrap.min.css~/css/site.css-
~/BlazorSample.styles.css(der Namespace der Beispiel-App lautetBlazorSample) -
~/_framework/blazor.server.js(Blazor Script)
Wenn der Bereich über einen eigenen Ordner für statische Ressourcen verfügen soll, fügen Sie den Ordner hinzu und geben Sie in
Program.csden Speicherort für die Middleware für statische Dateien an (z. B.app.UseStaticFiles("/Admin/wwwroot")).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 einePages/Admin/Index.razor-Datei hinzu, die auf derPages/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 beispielsweisePages/Admin/Component1.razormit einer@page-Anweisung und der Routenvorlage@page "/admin/component1an.Rufen Sie in
Program.csdie 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();