Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 10 tohoto článku.
Varování
Tato verze ASP.NET Core se už nepodporuje. Další informace naleznete v Zásadách podpory pro .NET a .NET Core. Aktuální verzi tohoto článku naleznete v verzi .NET 9.
Tento článek vysvětluje, jak nakonfigurovat a přečíst prostředí v aplikaci Blazor.
Při místním spuštění aplikace se prostředí automaticky nastaví na Development. Po publikování aplikace se prostředí ve výchozím nastavení nastaví na Production.
Doporučujeme následující konvence:
Pro místní vývoj vždy používejte název prostředí
Development. Důvodem je to, že architektura ASP.NET Core očekává přesně tento název při konfiguraci aplikace a nástrojů pro místní vývoj aplikací.Pro testování, přípravu a produkční prostředí vždy publikujte a nasaďte aplikaci. Můžete použít jakékoli schéma pojmenování prostředí pro publikované aplikace, ale vždy použijte názvy souborů nastavení aplikace s velkými a malými písmeny segmentu prostředí, které přesně odpovídají názvu prostředí. Pro přípravu použijte jako název prostředí "
Staging" (velké písmeno "S") a pojmenujte soubor s nastavením aplikace tak, aby odpovídal (appsettings.Staging.json). Pro produkci použijte jako název prostředí "Production" (velké písmeno "P") a soubor s nastavením aplikace pojmenujte tak, aby odpovídal (appsettings.Production.json).
Nastavení prostředí
Prostředí se nastavuje pomocí některého z následujících přístupů:
- Blazor Web App nebo Blazor Server: Pro obecné aplikace ASP.NET Core použijte některý z přístupů popsaných v prostředích ASP.NET Core Runtime .
- Libovolná Blazor aplikace: Blazor spuštění konfigurace
- Samostatná Blazor WebAssembly:
<WasmApplicationEnvironmentName>vlastnost
Na klientovi pro Blazor Web App prostředí je určeno serverem prostřednictvím komentáře HTML, se kterým vývojáři neinteragují.
<!--Blazor-WebAssembly:{"environmentName":"Development", ...}-->
Pro samostatnou Blazor WebAssembly aplikaci nastavte prostředí s <WasmApplicationEnvironmentName> vlastností MSBuild v souboru projektu aplikace (.csproj). Následující příklad nastaví Staging prostředí:
<WasmApplicationEnvironmentName>Staging</WasmApplicationEnvironmentName>
Výchozí prostředí jsou Development určená pro sestavení a Production publikování.
Během operací sestavení/publikování existuje několik přístupů k nastavení prostředí v samostatné Blazor WebAssembly aplikaci a jeden přístup pro spuštění nebo spuštění aplikace v klientovi:
Nastavte hodnotu vlastnosti při spuštění
dotnet buildnebodotnet publish. Následující příklad nastaví prostředí naStagingpři publikování aplikace:dotnet publish -p:WasmApplicationEnvironmentName=StagingNastavte vlastnost během sestavování nebo publikování na základě konfigurace aplikace v sadě Visual Studio. Následující skupiny vlastností je možné použít v souboru projektu aplikace nebo v libovolném konfiguračním souboru publikování (
.pubxml). Přidejte další skupiny vlastností pro další používané konfigurace sestavení.<PropertyGroup Condition="'$(Configuration)' == 'Debug'"> <WasmApplicationEnvironmentName>Development</WasmApplicationEnvironmentName> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)' == 'Release'"> <WasmApplicationEnvironmentName>Production</WasmApplicationEnvironmentName> </PropertyGroup>Prostředí lze nastavit na základě použití profilu publikování. V následujícím příkladu první podmínka nastaví prostředí tak, aby
Developmentse nepoužíval žádný profil publikování (platí pro operace sestavení i publikování bez profilu), zatímco druhá podmínka zahrnuje nastavení prostředí naProductionpři použití jakéhokoli profilu publikování:<PropertyGroup Condition="'$(PublishProfile)' == ''"> <WasmApplicationEnvironmentName>Development</WasmApplicationEnvironmentName> </PropertyGroup> <PropertyGroup Condition="'$(PublishProfile)' != ''"> <WasmApplicationEnvironmentName>Production</WasmApplicationEnvironmentName> </PropertyGroup>Vytvořte vlastní koncový bod webového rozhraní API na straně serveru. Samostatná Blazor WebAssembly aplikace vyžaduje své prostředí z webového rozhraní API buď při spuštění aplikace, nebo na vyžádání, když je spuštěná. Hodnota by měla být předána do
WebAssemblyStartOptionsnebo swithApplicationEnvironment.Poznámka
Odkazy na referenční zdroj .NET v dokumentaci obvykle otevřou výchozí větev úložiště, která představuje aktuální vývoj další verze .NET. Pokud chcete vybrat značku pro konkrétní verzi, použijte rozevírací seznam pro přepnutí mezi větvemi nebo značkami. Další informace najdete v tématu Jak vybrat značku verze zdrojového kódu ASP.NET Core (dotnet/AspNetCore.Docs #26205).
- Blazor Web App nebo Blazor Server: Pro obecné aplikace ASP.NET Core použijte některý z přístupů popsaných v prostředích ASP.NET Core Runtime .
- Libovolná Blazor aplikace:
-
Blazor WebAssembly:
Blazor-Environmentzáhlaví
Na klientovi pro Blazor Web Appje prostředí určeno ze serveru prostřednictvím middlewaru, který toto prostředí komunikuje s prohlížečem prostřednictvím hlavičky pojmenované Blazor-Environment. Hlavička nastaví prostředí při vytvoření WebAssemblyHost v souboru Program na klientské straně (WebAssemblyHostBuilder.CreateDefault).
Pro samostatnou Blazor WebAssembly aplikaci spuštěnou místně přidá vývojový server hlavičku Blazor-Environment s názvem prostředí získaným z hostitelského prostředí. Hostitelské prostředí nastaví prostředí z proměnné prostředí ASPNETCORE_ENVIRONMENT vytvořené souborem Properties/launchSettings.json projektu. Výchozí hodnota proměnné prostředí v projektu vytvořeném ze šablony projektu Blazor WebAssembly je Development. Další informace najdete v sekci Nastavení prostředí na straně klienta prostřednictvím hlavičky.
- Blazor Server: Pro obecné aplikace ASP.NET Core použijte některý z přístupů popsaných v prostředích ASP.NET Core Runtime .
- Blazor Server nebo Blazor WebAssembly:
-
Blazor WebAssembly:
Blazor-Environmentzáhlaví
Na klientovi hostované aplikace Blazor WebAssembly je prostředí určováno serverem prostřednictvím middlewaru, který komunikuje prostředí s prohlížečem prostřednictvím hlavičky pojmenované Blazor-Environment. Hlavička nastaví prostředí při vytvoření WebAssemblyHost v souboru Program na klientské straně (WebAssemblyHostBuilder.CreateDefault).
Pro samostatnou Blazor WebAssembly aplikaci spuštěnou místně přidá vývojový server hlavičku Blazor-Environment s názvem prostředí získaným z hostitelského prostředí. Hostitelské prostředí nastaví prostředí z proměnné prostředí ASPNETCORE_ENVIRONMENT vytvořené souborem Properties/launchSettings.json projektu. Výchozí hodnota proměnné prostředí v projektu vytvořeném ze šablony projektu Blazor WebAssembly je Development. Další informace najdete v sekci Nastavení prostředí na straně klienta prostřednictvím hlavičky.
Pro aplikaci běžící místně ve vývojovém prostředí se ve výchozím nastavení použije prostředí Development. Při publikování aplikace se prostředí automaticky nastaví na Production.
Obecné pokyny ke konfiguraci aplikace ASP.NET Core můžete najít v tématu prostředí ASP.NET Core runtime. Konfigurace aplikace na straně serveru se statickými soubory v jiných prostředích než Development prostředí během vývoje a testování (například Staging) najdete v tématu Statické soubory v ASP.NET Core.
Nastavení prostředí na straně klienta pomocí spouštěcí konfigurace Blazor
Následující příklad spustí Blazor v Staging prostředí, pokud název hostitele obsahuje localhost. V opačném případě je prostředí nastaveno na výchozí hodnotu.
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>
V předchozím příkladu symbol {BLAZOR SCRIPT} představuje cestu ke skriptu a název souboru označený zástupcem Blazor. Viz umístění skriptu v ASP.NET Core Blazor struktuře projektu.
Poznámka
U Blazor Web App, které nastavily vlastnost webAssembly>environment v konfiguraci Blazor.start, je vhodné přizpůsobit prostředí na straně serveru prostředí nastavenému na vlastnosti environment. Jinak předběžné vykreslování na serveru funguje v jiném prostředí než vykreslování na klientovi, což vede k libovolným efektům. Obecné pokyny k nastavení prostředí pro Blazor Web App najdete v tématu prostředí modulu runtime ASP.NET Core.
Samostatný Blazor WebAssembly:
<script src="{BLAZOR SCRIPT}" autostart="false"></script>
<script>
if (window.location.hostname.includes("localhost")) {
Blazor.start({
environment: "Staging"
});
} else {
Blazor.start();
}
</script>
V předchozím příkladu symbol {BLAZOR SCRIPT} představuje cestu ke skriptu a název souboru označený zástupcem Blazor. Viz umístění skriptu v ASP.NET Core Blazor struktuře projektu.
Použití vlastnosti environment přepíše prostředí nastavené hlavičkou Blazor-Environment.
Předchozí přístup nastaví prostředí klienta beze změny hodnoty hlavičky Blazor-Environment ani nezmění protokolování konzoly projektu serveru pro spouštěcí prostředí pro Blazor Web App, která přijala globální vykreslování Interactive WebAssembly.
Pokud chcete protokolovat prostředí do konzole buď v samostatné aplikaci Blazor WebAssembly, nebo v projektu .Client v rámci Blazor Web App, umístěte následující kód jazyka C# do souboru Program po vytvoření WebAssemblyHost pomocí WebAssemblyHostBuilder.CreateDefault a před řádek, který sestaví a spustí projekt (await builder.Build().RunAsync();):
Console.WriteLine(
$"Client Hosting Environment: {builder.HostEnvironment.Environment}");
Další informace o spuštění Blazor naleznete v tématu ASP.NET Core Blazor startup.
Nastavení prostředí na straně klienta prostřednictvím hlavičky
Blazor WebAssembly aplikace můžou prostředí nastavit pomocí hlavičky Blazor-Environment. Konkrétně musí být hlavička odpovědi nastavena na souboru _framework/blazor.boot.json, ale nijak neuškodí nastavit hlavičku na odpovědi od souborového serveru i pro jiné požadavky na soubory Blazor nebo pro celé nasazení Blazor.
I když rámec Blazor vydává název hlavičky v kebab case se smíšenou velikostí písmen (Blazor-Environment), můžete použít kebab case se všemi malými nebo všemi velkými písmeny (blazor-environment, BLAZOR-ENVIRONMENT).
U místních vývojových běhů s integrovaným vývojovým serverem Blazormůžete řídit hodnotu hlavičky Blazor-Environment nastavením hodnoty proměnné prostředí ASPNETCORE_ENVIRONMENT v souboru Properties/launchSettings.json projektu. Při místním spuštění s vývojovým serverem je pořadí priorit pro určení prostředí aplikace následující: Blazor.start konfigurace (environment klíč),>Blazor-Environment hlavička odpovědi (blazor.boot.json soubor), >ASPNETCORE_ENVIRONMENT proměnná prostředí (launchSettings.json). Nemůžete použít přístup proměnné prostředí ASPNETCORE_ENVIRONMENT (launchSettings.json) pro nasazenou Blazor WebAssembly aplikaci. Technika funguje jenom s vývojovým serverem na místních spuštěních aplikace.
služba IIS
V následujícím příkladu služby IIS se vlastní hlavička (Blazor-Environment) přidá do publikovaného souboru web.config. Soubor web.config se nachází ve složce bin/Release/{TARGET FRAMEWORK}/publish, kde zástupný symbol {TARGET FRAMEWORK} je cílová architektura:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
...
<httpProtocol>
<customHeaders>
<add name="Blazor-Environment" value="Staging" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Poznámka
Pokud chcete použít vlastní web.config soubor pro službu IIS, který nebude přepsán při publikování aplikace do publish složky, přečtěte si téma Hostování a nasazení ASP.NET Core Blazor WebAssembly se službou IIS.
Nginx
Pro servery Nginx použijte direktivu add_header z ngx_http_headers_module:
http {
server {
...
location / {
...
add_header Blazor-Environment "Staging";
}
}
}
Další informace najdete v následujících zdrojích informací:
Apač
Pro servery Apache použijte direktivu Header z modulu mod_headers:
<VirtualHost *:80>
...
Header set Blazor-Environment "Staging"
...
</VirtualHost>
Další informace najdete v následujících zdrojích informací:
-
dokumentaci k Apache (vyhledejte nejnovější verzi
mod_headers") - Hostování a nasazení ASP.NET Core Blazor WebAssembly s využitím Apache
Nastavení prostředí pro Azure App Service
Pro samostatnou aplikaci Blazor WebAssembly můžete prostředí nastavit ručně zavedením konfigurace nebo Blazor-Environment hlavičky.
Pro aplikaci na straně serveru nastavte prostředí prostřednictvím nastavení aplikace ASPNETCORE_ENVIRONMENT v Azure:
Potvrďte, že velikost písmen segmentů prostředí v názvech souborů nastavení aplikace přesně odpovídá velikosti písmen jejich názvů prostředí. Například odpovídající název souboru nastavení aplikace pro
Stagingprostředí jeappsettings.Staging.json. Pokud je název souboruappsettings.staging.json(malá písmenas), soubor se nenachází a nastavení v souboru se v prostředíStagingnepoužívá.V případě nasazení sady Visual Studio ověřte, že je aplikace nasazená do správného slotu nasazení. Pro aplikaci s názvem
BlazorAzureAppSamplese aplikace nasadí do slotu nasazeníStaging.V portálu Azure nastavte slot nasazení prostředí s nastavením aplikace
ASPNETCORE_ENVIRONMENT. Pro aplikaci s názvemBlazorAzureAppSamplese přípravný slot služby App Service jmenujeBlazorAzureAppSample/Staging. Pro konfiguraci slotuStagingvytvořte nastavení aplikace proASPNETCORE_ENVIRONMENTs hodnotouStaging. Nastavení slotu nasazení je pro tuto funkci povoleno.
Když je požadována v prohlížeči, aplikace BlazorAzureAppSample/Staging se načte v prostředí Staging v https://blazorazureappsample-staging.azurewebsites.net.
Když se aplikace načte v prohlížeči, kolekce hlaviček odpovědí pro blazor.boot.json indikuje, že hodnota hlavičky Blazor-Environment je Staging.
Nastavení aplikace ze souboru appsettings.{ENVIRONMENT}.json se načte aplikací, kde zástupný symbol {ENVIRONMENT} je prostředí aplikace. V předchozím příkladu se načtou nastavení ze souboru appsettings.Staging.json.
Čtěte prostředí v aplikaci Blazor WebAssembly
Získejte prostředí aplikace v komponentě vložením IWebAssemblyHostEnvironment a přečtením vlastnosti Environment.
ReadEnvironment.razor:
@page "/read-environment"
@using Microsoft.AspNetCore.Components.WebAssembly.Hosting
@inject IWebAssemblyHostEnvironment Env
<h1>Environment example</h1>
<p>Environment: @Env.Environment</p>
Číst prostředí na straně klienta v Blazor Web App
Za předpokladu, že pro komponentu nebo aplikaci není zakázáno předvykreslení, je komponenta v projektu .Client předvykreslena na serveru. Vzhledem k tomu, že server nemá zaregistrovanou službu IWebAssemblyHostEnvironment, není možné službu vkládat a používat metody a vlastnosti rozšíření hostitelského prostředí implementace služby během předrenderingu serveru. Vložením služby do interaktivní WebAssembly nebo interaktivní automatizační komponenty dojde k následující běhové chybě:
There is no registered service of type 'Microsoft.AspNetCore.Components.WebAssembly.Hosting.IWebAssemblyHostEnvironment'.
Pokud to chcete vyřešit, vytvořte vlastní implementaci služby pro IWebAssemblyHostEnvironment na serveru. Další informace a ukázkovou implementaci najdete v části Vlastní implementace služby na serveru článku Prerendering , který se zobrazí dále v Blazor dokumentaci.
Načítání klientského prostředí při spuštění
Během spuštění WebAssemblyHostBuilder zpřístupňuje IWebAssemblyHostEnvironment prostřednictvím vlastnosti HostEnvironment, která umožňuje logiku specifickou pro prostředí v kódu tvůrce hostitelů.
V souboru Program:
if (builder.HostEnvironment.Environment == "Custom")
{
...
};
Následující pomocné metody rozšíření poskytované prostřednictvím WebAssemblyHostEnvironmentExtensions umožňují kontrolovat aktuální prostředí na Development, Production, Staginga vlastní názvy prostředí:
V souboru Program:
if (builder.HostEnvironment.IsStaging())
{
...
};
if (builder.HostEnvironment.IsEnvironment("Custom"))
{
...
};
Vlastnost IWebAssemblyHostEnvironment.BaseAddress lze použít při spuštění, pokud není služba NavigationManager k dispozici.