Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Notitie
Dit is niet de nieuwste versie van dit artikel. Zie de .NET 9-versie van dit artikelvoor de huidige release.
Waarschuwing
Deze versie van ASP.NET Core wordt niet meer ondersteund. Zie de .NET- en .NET Core-ondersteuningsbeleidvoor meer informatie. Zie de .NET 9-versie van dit artikelvoor de huidige release.
Belangrijk
Deze informatie heeft betrekking op een pre-releaseproduct dat aanzienlijk kan worden gewijzigd voordat het commercieel wordt uitgebracht. Microsoft geeft geen garanties, uitdrukkelijk of impliciet, met betrekking tot de informatie die hier wordt verstrekt.
Zie de .NET 9-versie van dit artikelvoor de huidige release.
In dit artikel wordt uitgelegd hoe u Blazor apps host en implementeert.
De app publiceren
Apps worden gepubliceerd voor implementatie in de releaseconfiguratie.
Notitie
Publiceer een gehoste Blazor WebAssembly-oplossing vanuit het Server project.
- Selecteer de opdracht Publish in het menu Build, waarbij de
{APPLICATION}tijdelijke aanduiding staat voor de naam van de app. - Selecteer het publicatiedoel. Als u lokaal wilt publiceren, selecteert u Map. Kies Volgende.
- Wanneer u lokaal publiceert, accepteert u de standaardmaplocatie of geeft u een andere locatie op. Selecteer Voltooien om het profiel op te slaan. Selecteer Sluitaf.
- Als u de publicatiemap van het doel wilt opschonen voordat u de app publiceert, selecteert u Alle instellingen weergeven. Selecteer Instellingen>Publiceermogelijkheden voor bestanden>Verwijder alle bestaande bestanden voordat u publiceert. Selecteer Opslaan.
- Selecteer de knop Publiceren.
Als u de app publiceert, wordt een herstel van de afhankelijkheden van het project geactiveerd en het project bouwt voordat u de assets voor implementatie maakt. Als onderdeel van het buildproces worden ongebruikte methoden en assembly's verwijderd om de downloadgrootte en laadtijden van apps te verminderen.
De doelpublicatiemap leegmaken
Wanneer u de dotnet publish opdracht in een opdrachtshell gebruikt om een app te publiceren, genereert de opdracht de benodigde bestanden voor implementatie op basis van de huidige status van het project en plaatst u de bestanden in de opgegeven uitvoermap. De opdracht maakt de doelmap niet automatisch schoon voordat de app wordt gepubliceerd.
Als u de doelmap automatisch wilt leegmaken voordat de app wordt gepubliceerd, voegt u het volgende MSBuild-doel toe aan het projectbestand van de app (.csproj) onder het hoofdelement <Project> :
<Target Name="_RemovePublishDirBeforePublishing" BeforeTargets="BeforePublish">
<RemoveDir Directories="$(PublishDir)" Condition="'$(PublishDir)' != ''" />
</Target>
Standaardpubliceerlocaties
-
Blazor Web App: de app wordt gepubliceerd in de map
/bin/Release/{TARGET FRAMEWORK}/publish, waarbij de tijdelijke aanduiding{TARGET FRAMEWORK}het doelframework is. Implementeer de inhoud van de mappublishop de host. - ZelfstandigBlazor WebAssembly: De app wordt gepubliceerd in de
bin/Release/{TARGET FRAMEWORK}/publish-map of debin/Release/{TARGET FRAMEWORK}/browser-wasm/publish-map. Als u de app wilt implementeren als een statische site, kopieert u de inhoud van de mapwwwrootnaar de statische sitehost.
-
Blazor Server: de app wordt gepubliceerd in de map
/bin/Release/{TARGET FRAMEWORK}/publish, waarbij de tijdelijke aanduiding{TARGET FRAMEWORK}het doelframework is. Implementeer de inhoud van de mappublishop de host. - Blazor WebAssembly
- Zelfstandig: de app wordt gepubliceerd in de
/bin/Release/{TARGET FRAMEWORK}/publishofbin/Release/{TARGET FRAMEWORK}/browser-wasm/publishmap. Als u de app wilt implementeren als een statische site, kopieert u de inhoud van de mapwwwrootnaar de statische sitehost. - Gehost: De server ASP.NET Core-app en client-app Blazor WebAssembly worden gepubliceerd in de
/bin/Release/{TARGET FRAMEWORK}/publishmap van de server-app, samen met eventuele statische webassets van de client-app. Implementeer de inhoud van de mappublishop de host.
- Zelfstandig: de app wordt gepubliceerd in de
IIS
Als u een Blazor-app in IIS wilt hosten, raadpleegt u de volgende bronnen:
- IIS-hosting
- Host en implementeer ASP.NET Core-apps aan de serverzijdeBlazor: Blazor Web Apps (.NET 8 of hoger) en Blazor Server apps (.NET 7 of lager) die worden uitgevoerd op IIS, waaronder IIS met Virtuele Machines (VM's) met Windows OS en Azure App Service.
- Host en implementeer ASP.NET Core Blazor WebAssembly met IIS: Zelfstandige Blazor WebAssembly apps (alle .NET-releases) en gehoste Blazor WebAssembly apps (.NET 7 of eerder).
- Hosting van IIS-subtoepassingen
- Volg de richtlijnen voor het basispad van de app voordat u de app publiceert. In de voorbeelden wordt een app-basispad van
/CoolAppgebruikt en wordt uitgelegd hoe u het basispad kunt verkrijgen van app-instellingen of andere configuratieproviders. - Volg de richtlijnen voor subtoepassingsconfiguratie in Geavanceerde configuratie. Het mappad van de sub-app onder de hoofdsite wordt het virtuele pad van de sub-app. Voor een app-basispad van
/CoolAppwordt de Blazor app geplaatst in een map met de naamCoolApponder de hoofdsite en neemt de sub-app een virtueel pad van/CoolAppop.
- Volg de richtlijnen voor het basispad van de app voordat u de app publiceert. In de voorbeelden wordt een app-basispad van
Het delen van een app-pool tussen ASP.NET Core-apps wordt niet ondersteund, waaronder voor Blazor-apps. Gebruik één app-pool per app bij het hosten met IIS en vermijd het gebruik van de virtuele mappen van IIS voor het hosten van meerdere apps.
Een of meer Blazor WebAssembly apps die worden gehost door een ASP.NET Core-app, ook wel een gehoste Blazor WebAssembly-oplossinggenoemd, worden ondersteund voor één app-pool. We raden echter niet aan of ondersteunen het toewijzen van één app-pool aan meerdere gehoste Blazor WebAssembly oplossingen of in hostingscenario's voor sub-apps.
Zie voor meer informatie over Blazor.
Ondersteuning voor JavaScript-bundelaar
De Blazor runtime is afhankelijk van JavaScript-bestanden (JS) en de .NET-runtime die is gecompileerd in WebAssembly-code en beheerde assembly's die zijn verpakt als WebAssembly-bestanden. Wanneer een Blazor app is gebouwd, is de Blazor runtime afhankelijk van deze bestanden van verschillende buildlocaties. Vanwege deze beperking Blazoris de build-uitvoer niet compatibel met JS bundelaars, zoals Gulp, Webpack en Rollup.
Als u build-uitvoer wilt produceren die compatibel is met JS bundelaars tijdens het publiceren, stelt u de WasmBundlerFriendlyBootConfig eigenschap true MSBuild in op in het projectbestand van de app:
<WasmBundlerFriendlyBootConfig>true</WasmBundlerFriendlyBootConfig>
Belangrijk
Deze functie produceert alleen de bundelvriendelijke uitvoer bij het publiceren van de app.
De uitvoer kan niet rechtstreeks worden uitgevoerd in de browser, maar kan worden gebruikt door JS hulpprogramma's om bestanden te bundelen JS met de rest van de door de ontwikkelaar geleverde scripts.
Wanneer WasmBundlerFriendlyBootConfig is ingeschakeld, bevat de geproduceerde JSimport-instructies voor alle assets in de app, waardoor de afhankelijkheden voor de bundelaar zichtbaar zijn. Veel van de assets kunnen niet door de browser worden geladen, maar bundelaars kunnen meestal worden geconfigureerd om de assets te herkennen op basis van hun bestandstype om het laden te verwerken. Raadpleeg de documentatie van de bundelaar voor meer informatie over het configureren van uw bundelaar.
Notitie
Bundeling van build-uitvoer moet mogelijk zijn door imports naar afzonderlijke bestandslocaties in kaart te brengen met behulp van een aangepaste plugin voor de bundler. We bieden momenteel geen dergelijke plugin.
Notitie
Bij het vervangen van de files invoegtoepassing door url, worden alle JS-bestanden van de app, inclusief de Blazor-WebAssembly-runtime (base64 gecodeerd in de JS), gebundeld in de uitvoer. De grootte van het bestand is aanzienlijk groter (bijvoorbeeld 300% groter) dan wanneer de bestanden worden gecureerd met de files invoegtoepassing, dus we raden u niet aan om de url invoegtoepassing als een algemene praktijk te gebruiken bij het produceren van bundelwerkvriendelijke uitvoer voor JS bundelverwerking.
De volgende voorbeeld-apps zijn gebaseerd op Rollup. Vergelijkbare concepten zijn van toepassing wanneer u andere JS bundelaars gebruikt.
Demonstratievoorbeeld-apps voor Blazor WebAssembly in een React-app (BlazorWebAssemblyReact) en .NET op WebAssembly in een React-app (DotNetWebAssemblyReact) voor .NET 10 of hoger zijn beschikbaar in de Blazor GitHub-voorbeeldopslagplaats (dotnet/blazor-samples).
Aspecten van Blazor WebAssembly caching zijn van toepassing op Blazor Web Apps
Blazor richtlijnen voor bundelcaching en HTTP-caching in het Blazor WebAssembly knooppunt richten zich op zelfstandige Blazor WebAssembly apps, maar diverse aspecten van client-side caching in deze artikelen zijn ook van toepassing op Blazor Web Apps die interactieve webassembly- of interactieve autorederingsmodi gebruiken. Blazor Web App Als een systeem dat inhoud renderend aan de clientzijde een cacheprobleem met een statisch bestand of bundel tegenkomt, raadpleeg dan de richtlijnen in deze artikelen om het probleem op te lossen.
configuratie van Blazor ServerMapFallbackToPage
Deze sectie is alleen van toepassing op Blazor Server apps. MapFallbackToPage wordt niet ondersteund in Blazor Web App- en Blazor WebAssembly-apps.
In scenario's waarin een app een afzonderlijk gebied met aangepaste resources en Razor onderdelen vereist:
Maak een map in de
Pagesmap van de app om de resources op te slaan. Een beheerderssectie van een app wordt bijvoorbeeld gemaakt in een nieuwe map met de naamAdmin(Pages/Admin).Maak een hoofdpagina (
_Host.cshtml) voor het gebied. Maak bijvoorbeeld eenPages/Admin/_Host.cshtmlbestand op basis van de hoofdpagina van de app (Pages/_Host.cshtml). Geef geen@page-instructie op de Beheer-pagina_Host.Voeg een indeling toe aan de map van het gebied (bijvoorbeeld
Pages/Admin/_Layout.razor). Stel in de indeling voor het aparte gebied de<base>-tag ophrefzodat deze past bij de map van het gebied (bijvoorbeeld<base href="/Admin/" />). Voeg voor demonstratiedoeleinden~/toe aan de statische resources op de pagina. Bijvoorbeeld:~/css/bootstrap/bootstrap.min.css~/css/site.css-
~/BlazorSample.styles.css(de naamruimte van de voorbeeld-app isBlazorSample) -
~/_framework/blazor.server.js(Blazor script)
Als het gebied een eigen statische assetmap moet hebben, voegt u de map toe en geeft u de locatie op aan Static File Middleware in
Program.cs(bijvoorbeeldapp.UseStaticFiles("/Admin/wwwroot")).Razor-onderdelen worden toegevoegd aan de map voor dit gebied. Voeg minimaal een
Indexonderdeel toe aan de gebiedsmap met de juiste@pageinstructie voor het gebied. Voeg bijvoorbeeld eenPages/Admin/Index.razor-bestand toe op basis van het standaardbestandPages/Index.razorvan de app. Geef het beheergebied aan als de routesjabloon boven aan het bestand (@page "/admin"). Voeg indien nodig extra onderdelen toe. BijvoorbeeldPages/Admin/Component1.razormet een@pagerichtlijn en routesjabloon van@page "/admin/component1.Roep in
Program.csMapFallbackToPage aan voor het aanvraagpad van het gebied direct voor het pad naar de terugvalhoofdpagina naar de_Hostpagina:... app.UseRouting(); app.MapBlazorHub(); app.MapFallbackToPage("~/Admin/{*clientroutes:nonfile}", "/Admin/_Host"); app.MapFallbackToPage("/_Host"); app.Run();