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.
Opmerking
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 de omgeving in een Blazor app configureert en leest.
Wanneer u een app lokaal uitvoert, wordt de omgeving standaard ingesteld op Development
. Wanneer de app wordt gepubliceerd, wordt de omgeving standaard ingesteld op Production
.
We raden de volgende conventies aan:
Gebruik altijd de
Development
''-omgevingsnaam voor lokale ontwikkeling. Dit komt doordat het ASP.NET Core-framework precies die naam verwacht bij het configureren van de app en hulpprogramma's voor uitvoeringen van lokale ontwikkeling van een app.Voor test-, faserings- en productieomgevingen publiceert en implementeert u de app altijd. U kunt elk naamgevingsschema voor de omgeving gebruiken dat u wilt gebruiken voor gepubliceerde apps, maar altijd bestandsnamen voor app-instellingen gebruiken met hoofdletters van het omgevingssegment die exact overeenkomen met de naam van de omgeving. Gebruik voor de testomgeving "
Staging
" (met hoofdletter "S") als de omgevingsnaam en zorg ervoor dat de naam van het app-instellingenbestand overeenkomt (appsettings.Staging.json
). Voor productie gebruikt u 'Production
' (hoofdletter 'P) als de omgevingsnaam en noemt u het bestand met app-instellingen dat overeenkomt met (appsettings.Production.json
).
De omgeving instellen
De omgeving wordt ingesteld op een van de volgende manieren:
- Blazor Web App of Blazor Server: gebruik een van de methoden die worden beschreven in Meerdere omgevingen gebruiken in ASP.NET Core voor algemene ASP.NET Core-apps.
- Elke Blazor app: Blazor configuratie starten
- Zelfstandig Blazor WebAssembly:
<WasmApplicationEnvironmentName>
eigenschap
Voor een Blazor Web App op de client, wordt de omgeving door de server bepaald via een HTML-opmerking waarmee ontwikkelaars niet communiceren.
<!--Blazor-WebAssembly:{"environmentName":"Development", ...}-->
Voor een zelfstandige Blazor WebAssembly app stelt u de omgeving in met de <WasmApplicationEnvironmentName>
eigenschap in het projectbestand van de app (.csproj
). In het volgende voorbeeld wordt de Staging
omgeving ingesteld:
<WasmApplicationEnvironmentName>Staging</WasmApplicationEnvironmentName>
De standaardomgevingen zijn Development
voor het bouwen en Production
publiceren.
- Blazor Web App of Blazor Server: gebruik een van de methoden die worden beschreven in Meerdere omgevingen gebruiken in ASP.NET Core voor algemene ASP.NET Core-apps.
- Welke Blazor app dan ook:
-
Blazor WebAssembly:
Blazor-Environment
koptekst
Bij de client van een Blazor Web App, wordt de omgeving vanaf de server bepaald via een middleware die de omgeving naar de browser communiceert via een header met de naam Blazor-Environment
. De header stelt de omgeving in wanneer de WebAssemblyHost wordt gemaakt in het clientzijdebestand Program
(WebAssemblyHostBuilder.CreateDefault).
Voor een zelfstandige Blazor WebAssembly app die lokaal wordt uitgevoerd, voegt de ontwikkelserver de Blazor-Environment
header toe met de omgevingsnaam die is verkregen uit de hostingomgeving. De hostingomgeving stelt de omgeving in op basis van de ASPNETCORE_ENVIRONMENT
omgevingsvariabele die is ingesteld door het bestand van Properties/launchSettings.json
het project. De standaardwaarde van de omgevingsvariabele in een project dat is gemaakt op basis van de Blazor WebAssembly projectsjabloon is Development
. Zie de sectie De omgeving aan de clientzijde instellen via de koptekst voor meer informatie.
- Blazor Server: Gebruik een van de methoden die worden beschreven in Meerdere omgevingen gebruiken in ASP.NET Core voor algemene ASP.NET Core-apps.
- Blazor Server of Blazor WebAssembly:
-
Blazor WebAssembly:
Blazor-Environment
koptekst
Op de client van een gehoste Blazor WebAssembly app wordt de omgeving van de server bepaald via een middleware die de omgeving via een header met de naam Blazor-Environment
communiceert naar de browser. De header stelt de omgeving in wanneer WebAssemblyHost wordt gecreëerd aan de clientzijde in het Program
bestand (WebAssemblyHostBuilder.CreateDefault).
Voor een zelfstandige Blazor WebAssembly app die lokaal wordt uitgevoerd, voegt de ontwikkelserver de Blazor-Environment
header toe met de omgevingsnaam die is verkregen uit de hostingomgeving. De hostingomgeving stelt de omgeving in op basis van de ASPNETCORE_ENVIRONMENT
omgevingsvariabele die is ingesteld door het bestand van Properties/launchSettings.json
het project. De standaardwaarde van de omgevingsvariabele in een project dat is gemaakt op basis van de Blazor WebAssembly projectsjabloon is Development
. Zie de sectie De omgeving aan de clientzijde instellen via de koptekst voor meer informatie.
Voor apps die lokaal worden uitgevoerd in ontwikkeling, wordt de app standaard ingesteld op de Development
omgeving. Als u de app publiceert, wordt de omgeving standaard ingesteld op Production
.
Zie Meerdere omgevingen gebruiken in ASP.NET Core voor algemene richtlijnen voor het configureren van ASP.NET Core-apps. Zie voor serverside app-configuratie met statische bestanden in andere omgevingen dan de Development omgeving tijdens ontwikkeling en testen (bijvoorbeeld Staging), zie ASP.NET Core Blazor Statische bestanden.
De omgeving aan de clientzijde instellen via Blazor opstartconfiguratie
Het volgende voorbeeld start Blazor in de Staging
omgeving als de hostnaam localhost
bevat. Anders wordt de omgeving ingesteld op de standaardwaarde.
Blazor Web App:
<script src="{BLAZOR SCRIPT}" autostart="false"></script>
<script>
if (window.location.hostname.includes("localhost")) {
Blazor.start({
webAssembly: {
environment: "Staging"
}
});
} else {
Blazor.start();
}
</script>
In het voorgaande voorbeeld zijn de tijdelijke aanduidingen {BLAZOR SCRIPT}
en Blazor respectievelijk het scriptpad en de bestandsnaam. Zie ASP.NET Core Blazor projectstructuurvoor de locatie van het script.
Opmerking
Als u de webAssembly
>environment
-eigenschap in Blazor.start
configuratie instelt, is het verstandig om de serverside-omgeving af te stemmen op de omgeving die op de environment
-eigenschap is ingesteld. Anders werkt prerendering op de server onder een andere omgeving dan rendering op de client, wat resulteert in willekeurige effecten. Zie Meerdere omgevingen gebruiken in ASP.NET Core voor algemene richtlijnen voor het instellen van de omgeving voor een Blazor Web Appomgeving.
Zelfstandige Blazor WebAssembly:
<script src="{BLAZOR SCRIPT}" autostart="false"></script>
<script>
if (window.location.hostname.includes("localhost")) {
Blazor.start({
environment: "Staging"
});
} else {
Blazor.start();
}
</script>
In het voorgaande voorbeeld zijn de tijdelijke aanduidingen {BLAZOR SCRIPT}
en Blazor respectievelijk het scriptpad en de bestandsnaam. Zie ASP.NET Core Blazor projectstructuurvoor de locatie van het script.
Als u de environment
eigenschap gebruikt, wordt de omgeving die door de Blazor-Environment
header is ingesteld, overschreven.
Met de voorgaande benadering wordt de omgeving van de client ingesteld zonder de waarde van de Blazor-Environment
header te wijzigen, noch wijzigt het de consolelogboekregistratie van de opstartomgeving van het serverproject voor een omgeving Blazor Web App die wereldwijde Interactive WebAssembly-rendering heeft aangenomen.
Als u de omgeving wilt registreren bij de console in een zelfstandige Blazor WebAssembly app of het .Client
project van een Blazor Web App, plaatst u de volgende C#-code in het Program
bestand nadat de WebAssemblyHost omgeving is gemaakt met WebAssemblyHostBuilder.CreateDefault en vóór de regel waarmee het project wordt gebouwd en uitgevoerd (await builder.Build().RunAsync();
):
Console.WriteLine(
$"Client Hosting Environment: {builder.HostEnvironment.Environment}");
Voor meer informatie over Blazor startup, zie ASP.NET Core Blazor startup.
De omgeving aan de clientzijde instellen via header
Blazor WebAssembly apps kunnen de omgeving instellen met de Blazor-Environment
header. De antwoordheader moet specifiek worden ingesteld op het _framework/blazor.boot.json
bestand, maar er is geen kwaad om de header in te stellen op bestandsserverantwoorden voor andere Blazor bestandsaanvragen of de hele Blazor implementatie.
Hoewel het Blazor framework de headernaam in kebab case met gemengde hoofd- en kleine letters (Blazor-Environment
) uitgeeft, kunt u gerust alleen kleine letters of alleen hoofdletters in kebab case (blazor-environment
, BLAZOR-ENVIRONMENT
) gebruiken.
Voor lokale ontwikkelingssessies met de ingebouwde ontwikkelserver van Blazor kunt u de waarde van de Blazor-Environment
-header beheren door de waarde van de ASPNETCORE_ENVIRONMENT
-omgevingsvariabele in te stellen in het Properties/launchSettings.json
-bestand van het project. Wanneer de app lokaal wordt uitgevoerd met de ontwikkelserver, is Blazor.start
de volgorde van prioriteit bij het bepalen van de app-omgeving configuratie (environment
sleutel)>Blazor-Environment
responseheader (blazor.boot.json
bestand) >ASPNETCORE_ENVIRONMENT
omgevingsvariabele (launchSettings.json
). U kunt de ASPNETCORE_ENVIRONMENT
omgevingsvariabele (launchSettings.json
) niet gebruiken voor een geïmplementeerde Blazor WebAssembly app. De techniek werkt alleen met de ontwikkelserver op lokale uitvoeringen van de app.
IIS
In het volgende voorbeeld voor IIS wordt de aangepaste header (Blazor-Environment
) toegevoegd aan het gepubliceerde web.config
bestand. Het web.config
bestand bevindt zich in de bin/Release/{TARGET FRAMEWORK}/publish
map, waar de {TARGET FRAMEWORK}
placeholder het doelframework is.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
...
<httpProtocol>
<customHeaders>
<add name="Blazor-Environment" value="Staging" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Opmerking
Als u een aangepast web.config
bestand wilt gebruiken voor IIS dat niet wordt overschreven wanneer de app naar de publish
map wordt gepubliceerd, raadpleegt u Host en implementeert u ASP.NET Core Blazor WebAssembly met IIS.
Nginx
Gebruik voor Nginx-servers de add_header
instructie van ngx_http_headers_module
.
http {
server {
...
location / {
...
add_header Blazor-Environment "Staging";
}
}
}
Zie de volgende bronnen voor meer informatie:
Apache
Gebruik voor Apache-servers de Header
instructie uit de mod_headers
module:
<VirtualHost *:80>
...
Header set Blazor-Environment "Staging"
...
</VirtualHost>
Zie de volgende bronnen voor meer informatie:
-
Apache-documentatie (zoek in de nieuwste versie naar '
mod_headers
') - ASP.NET Core Blazor WebAssembly hosten en implementeren met Apache
De omgeving instellen voor Azure App Service
Voor een zelfstandige Blazor WebAssembly app kunt u de omgeving handmatig instellen via de configuratie starten of de Blazor-Environment
header.
Voor een app aan de serverzijde stelt u de omgeving in via een ASPNETCORE_ENVIRONMENT
app-instelling in Azure:
Controleer of de hoofdlettergebruik van omgevingssegmenten in bestandsnamen van app-instellingen precies overeenkomt met het hoofdlettergebruik van hun omgevingsnamen. De overeenkomende naam van het app-instellingenbestand voor de
Staging
omgeving isappsettings.Staging.json
bijvoorbeeld . Als de bestandsnaamappsettings.staging.json
is (kleine letter 's
'), wordt het bestand niet gevonden en worden de instellingen uit het bestand niet gebruikt in deStaging
-omgeving.Voor Visual Studio-implementatie controleert u of de app is geïmplementeerd op de juiste implementatiesite. Voor een app met de naam
BlazorAzureAppSample
wordt de app geïmplementeerd in deStaging
implementatiesite.Stel in de Azure Portal voor het implementatieslot van de omgeving de omgeving in met de
ASPNETCORE_ENVIRONMENT
app-instelling. Voor een app met de naamBlazorAzureAppSample
is de staging App Service-slot genaamdBlazorAzureAppSample/Staging
. Maak voor de configuratie van deStaging
slot een app-instelling aan voorASPNETCORE_ENVIRONMENT
met de waardeStaging
. Instelling voor implementatieslots is ingeschakeld voor deze instelling.
Wanneer dit wordt aangevraagd in een browser, wordt de BlazorAzureAppSample/Staging
app geladen in de Staging
omgeving op https://blazorazureappsample-staging.azurewebsites.net
.
Wanneer de app in de browser wordt geladen, geeft de antwoordheaderverzameling blazor.boot.json
aan dat de waarde van de header Blazor-Environment
is Staging
.
App-instellingen uit het appsettings.{ENVIRONMENT}.json
bestand worden geladen door de app, waarbij de tijdelijke aanduiding de {ENVIRONMENT}
omgeving van de app is. In het voorgaande voorbeeld worden instellingen uit het appsettings.Staging.json
bestand geladen.
De omgeving in een Blazor WebAssembly app lezen
Verkrijg de omgeving van de app in een component door IWebAssemblyHostEnvironment te injecteren en de eigenschap Environment te lezen.
ReadEnvironment.razor
:
@page "/read-environment"
@using Microsoft.AspNetCore.Components.WebAssembly.Hosting
@inject IWebAssemblyHostEnvironment Env
<h1>Environment example</h1>
<p>Environment: @Env.Environment</p>
Lees de omgeving client-side in een Blazor Web App
Ervan uitgaande dat prerendering niet is uitgeschakeld voor een component of de app, wordt een component in het .Client
project voorgerenderd op de server. Omdat de server geen geregistreerde IWebAssemblyHostEnvironment service heeft, is het niet mogelijk om de service te injecteren en de hostomgevingsuitbreidingsmethoden en eigenschappen van de service-implementatie te gebruiken tijdens het voorbereiden van de server. Het injecteren van de service in een Interactive WebAssembly- of Interactive Auto-onderdeel resulteert in de volgende runtimefout:
There is no registered service of type 'Microsoft.AspNetCore.Components.WebAssembly.Hosting.IWebAssemblyHostEnvironment'.
Maak hiervoor een aangepaste service-implementatie voor IWebAssemblyHostEnvironment op de server. Voeg de volgende klasse toe aan het serverproject.
ServerHostEnvironment.cs
:
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.AspNetCore.Components;
public class ServerHostEnvironment(IWebHostEnvironment env, NavigationManager nav) :
IWebAssemblyHostEnvironment
{
public string Environment => env.EnvironmentName;
public string BaseAddress => nav.BaseUri;
}
Registreer de service in het Program
bestand van het serverproject.
builder.Services.TryAddScoped<IWebAssemblyHostEnvironment, ServerHostEnvironment>();
Op dit moment kan de IWebAssemblyHostEnvironment-service worden ingevoegd in een interactief WebAssembly- of interactief auto-onderdeel en worden gebruikt zoals weergegeven in de sectie omgeving lezen in een Blazor WebAssembly-app.
In het voorgaande voorbeeld kunt u laten zien dat het mogelijk is om een andere serveromgeving te hebben dan de clientomgeving. Dit wordt niet aanbevolen en kan leiden tot willekeurige resultaten. Wanneer u de omgeving instelt in een Blazor Web App, is het het beste om deze af te stemmen op de server- en .Client
-projectomgevingen. Houd rekening met het volgende scenario in een test-app:
- Implementeer de omgevingseigenschap aan de clientzijde (
webassembly
) met deStaging
omgeving viaBlazor.start
. Zie de sectie De client-omgeving instellen via opstartconfiguratie voor een voorbeeld. - Wijzig het bestand aan de serverzijde
Properties/launchSettings.json
niet. Laat deenvironmentVariables
sectie staan met deASPNETCORE_ENVIRONMENT
omgevingsvariabele ingesteld opDevelopment
.
U ziet de waarde van de IWebAssemblyHostEnvironment.Environment eigenschapswijziging in de gebruikersinterface.
Wanneer het prerendering plaatsvindt op de server, wordt het onderdeel weergegeven in de Development
omgeving:
Environment: Development
Wanneer het onderdeel slechts een seconde of twee later wordt geactiveerd nadat de Blazor bundel is gedownload en de .NET WebAssembly-runtime wordt geactiveerd, worden de waarden gewijzigd om aan te geven dat de client werkt in de Staging
omgeving op de client:
Environment: Staging
In het voorgaande voorbeeld ziet u waarom u het beste de serveromgeving instelt op overeenstemming met de clientomgeving voor ontwikkelings-, test- en productie-implementaties.
Zie voor meer informatie de sectie Client-side services kunnen niet worden opgelost tijdens prerendering van het artikel Render-modi, dat verderop in de Blazor documentatie verschijnt.
De omgeving aan de clientzijde lezen tijdens het opstarten
Tijdens het WebAssemblyHostBuilder opstarten wordt de IWebAssemblyHostEnvironment functie beschikbaar gemaakt via de HostEnvironment eigenschap, waarmee omgevingsspecifieke logica in host builder-code wordt ingeschakeld.
In het bestand Program
:
if (builder.HostEnvironment.Environment == "Custom")
{
...
};
De volgende gemaksuitbreidingsmethoden staan controle van de huidige omgeving voor Development
, Production
, Staging
en aangepaste omgevingsnamen toe via WebAssemblyHostEnvironmentExtensions.
In het bestand Program
:
if (builder.HostEnvironment.IsStaging())
{
...
};
if (builder.HostEnvironment.IsEnvironment("Custom"))
{
...
};
De eigenschap kan tijdens opstarten worden gebruikt wanneer de dienst niet beschikbaar is.