Blazor základní prostředí ASP.NET
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Upozorňující
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v tématu .NET a .NET Core Zásady podpory. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Důležité
Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Tento článek vysvětluje, jak nakonfigurovat a přečíst prostředí v Blazor aplikaci.
Při místním spuštění aplikace se ve výchozím nastavení prostředí nastaví na Development
hodnotu . Když je aplikace publikovaná, prostředí se 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í, které chcete publikovat aplikace, ale vždy použijte názvy souborů nastavení aplikace s písmenem segmentu prostředí, který přesně odpovídá názvu prostředí. Pro přípravu použijte jako název prostředí "
Staging
" (velkáS "") a soubor nastavení aplikace pojmenujte tak, aby odpovídal (appsettings.Staging.json
). V produkčním prostředí použijte jako název prostředí "Production
" (kapitálP) a pojmenujte soubor nastavení aplikace, který se má shodovat (appsettings.Production.json
).
Nastavení prostředí
Prostředí se nastavuje pomocí některého z následujících přístupů:
- Blazor Web App: Pro obecné aplikace ASP.NET Core použijte některý z přístupů popsaných v tématu Použití více prostředí v ASP.NET Core .
- Blazor Web App nebo samostatně Blazor WebAssembly: Blazor spuštění konfigurace
- Samostatná Blazor WebAssembly:
blazor-environment
hlavička - Blazor Web Appnebo samostatněBlazor WebAssembly: Aplikace Azure Service
V klientovi pro Blazor Web Appprostředí je určeno ze serveru prostřednictvím middlewaru, který prostředí komunikuje s prohlížečem prostřednictvím hlavičky s názvem blazor-environment
. Hlavička nastaví prostředí při WebAssemblyHost vytvoření v souboru na straně Program
klienta (WebAssemblyHostBuilder.CreateDefault).
Prostředí se nastavuje pomocí některého z následujících přístupů:
- Blazor Server: Pro obecné aplikace ASP.NET Core použijte některý z přístupů popsaných v tématu Použití více prostředí v ASP.NET Core .
- Blazor Server nebo Blazor WebAssembly: Blazor spuštění konfigurace
- Blazor WebAssembly:
blazor-environment
hlavička - Blazor Servernebo Blazor WebAssembly: Aplikace Azure Service
V klientovi hostované Blazor Web App Blazor WebAssembly aplikace nebo klienta je prostředí určeno ze serveru prostřednictvím middlewaru, který prostředí komunikuje s prohlížečem prostřednictvím hlavičky s názvem blazor-environment
. Hlavička nastaví prostředí při WebAssemblyHost vytvoření v souboru na straně Program
klienta (WebAssemblyHostBuilder.CreateDefault).
Pro samostatnou Blazor WebAssembly aplikaci spuštěnou místně přidá vývojový server hlavičku blazor-environment
.
V případě, že aplikace běží místně ve vývoji, je výchozí Development
pro dané prostředí. Publikování aplikace ve výchozím nastavení prostředí na Production
.
Obecné pokyny ke konfiguraci aplikace ASP.NET Core najdete v tématu Použití více prostředí v ASP.NET Core. Informace o konfiguraci 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 ASP.NET Core Blazor statické soubory.
Nastavení prostředí na straně klienta prostřednictvím Blazor konfigurace spuštění
Následující příklad začíná 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 {BLAZOR SCRIPT}
je Blazor zástupný symbol cesta ke skriptu a název souboru. Umístění skriptu najdete v tématu ASP.NET Blazor Základní struktura projektu.
Poznámka:
U Blazor Web Apptéto vlastnosti webAssembly
environment
>je vhodné nastavit vlastnost v Blazor.start
konfiguraci tak, aby odpovídala prostředí na straně serveru s prostředím nastaveným na environment
vlastnosti. Jinak bude předběžné vykreslování na serveru fungovat v jiném prostředí než vykreslování na klientovi, což vede k libovolným efektům. Obecné pokyny k nastavení prostředí pro prostředí Blazor Web Appnajdete v tématu Použití více prostředí v 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 {BLAZOR SCRIPT}
je Blazor zástupný symbol cesta ke skriptu a název souboru. Umístění skriptu najdete v tématu ASP.NET Blazor Základní struktura projektu.
environment
Použití vlastnosti přepíše prostředí nastavené hlavičkoublazor-environment
.
Předchozí přístup nastaví prostředí klienta beze změny blazor-environment
hodnoty hlavičky, ani nezmění protokolování konzoly projektu serveru pro spouštěcí prostředí pro Blazor Web App prostředí, které přijalo globální interaktivní vykreslování WebAssembly.
Pokud chcete prostředí protokolovat do konzoly v samostatném Blazor WebAssembly projektu nebo .Client
projektu , Blazor Web Appumístěte následující kód jazyka C# do Program
souboru po WebAssemblyHost vytvoření 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í architektury Blazor najdete v tématu Spuštění ASP.NET Core Blazor.
Nastavení prostředí na straně klienta prostřednictvím hlavičky
Blazor WebAssembly aplikace můžou prostředí nastavit pomocí hlavičky blazor-environment
.
V následujícím příkladu služby IIS se vlastní hlavička (blazor-environment
) přidá do publikovaného web.config
souboru. Soubor web.config
se nachází ve bin/Release/{TARGET FRAMEWORK}/publish
složce, kde {TARGET FRAMEWORK}
zástupný symbol představuje cílovou architekturu:
<?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ý není přepsán při publikování aplikace do publish
složky, přečtěte si téma Hostitel a nasazení ASP.NET Core Blazor WebAssembly.
I když architektura Blazor vydává název záhlaví ve všech malých písmenech (blazor-environment
), můžete použít libovolnou písmena, která chcete. Například název záhlaví, který podporuje každé slovo (Blazor-Environment
) velkými písmeny.
Nastavení prostředí pro službu Aplikace Azure Service
Pro samostatnou Blazor WebAssembly aplikaci můžete prostředí nastavit ručně prostřednictvím konfigurace spuštění nebo hlavičkyblazor-environment
.
V případě aplikace na straně serveru nastavte prostředí prostřednictvím ASPNETCORE_ENVIRONMENT
nastavení aplikace v Azure:
Ověřte, že velikost písmen segmentů prostředí v názvech souborů nastavení aplikace odpovídá velikostí písmen jejich názvů prostředí. Například odpovídající název souboru nastavení aplikace pro
Staging
prostředí jeappsettings.Staging.json
. Pokud jeappsettings.staging.json
název souboru (malými písmenys
), soubor se nenachází a nastavení v souboru se vStaging
prostředí nepoužívá.V případě nasazení sady Visual Studio ověřte, že je aplikace nasazená do správného slotu nasazení. U aplikace s názvem
BlazorAzureAppSample
se aplikace nasadí do slotuStaging
nasazení.Na webu Azure Portal pro slot nasazení prostředí nastavte prostředí s
ASPNETCORE_ENVIRONMENT
nastavením aplikace. Pro aplikaci s názvemBlazorAzureAppSample
má pracovní slot služby App Service názevBlazorAzureAppSample/Staging
. Pro konfiguraci slotuStaging
vytvořte nastaveníASPNETCORE_ENVIRONMENT
aplikace s hodnotouStaging
. Nastavení slotu nasazení je pro nastavení povolené.
Po vyžádání v prohlížeči se BlazorAzureAppSample/Staging
aplikace načte v Staging
prostředí na adrese https://blazorazureappsample-staging.azurewebsites.net
.
Když se aplikace načte v prohlížeči, kolekce blazor.boot.json
hlaviček odpovědí značí, že blazor-environment
hodnota hlavičky je Staging
.
Nastavení aplikace ze appsettings.{ENVIRONMENT}.json
souboru se načte aplikací, kde {ENVIRONMENT}
zástupný symbol představuje prostředí aplikace. V předchozím příkladu se načtou appsettings.Staging.json
nastavení ze souboru.
Čtení prostředí v Blazor WebAssembly aplikaci
Získejte prostředí aplikace v komponentě vložením IWebAssemblyHostEnvironment a přečtením Environment vlastnosti.
ReadEnvironment.razor
:
@page "/read-environment"
@using Microsoft.AspNetCore.Components.WebAssembly.Hosting
@inject IWebAssemblyHostEnvironment Env
<h1>Environment example</h1>
<p>Environment: @Env.Environment</p>
Čtení prostředí na straně klienta Blazor Web App
Za předpokladu, že prerendering není pro komponentu nebo aplikaci zakázaný, je komponenta v .Client
projektu předem na serveru. Vzhledem k tomu, že server nemá zaregistrovanou IWebAssemblyHostEnvironment službu, není možné tuto službu vložit a použít metody a vlastnosti rozšíření hostitelského prostředí implementace služby během předkreslování serveru. Vložením služby do interaktivní webovéassembly nebo interaktivní automatické komponenty dojde k následující chybě za běhu:
There is no registered service of type 'Microsoft.AspNetCore.Components.WebAssembly.Hosting.IWebAssemblyHostEnvironment'.
Pokud to chcete vyřešit, vytvořte na serveru vlastní implementaci IWebAssemblyHostEnvironment služby. Do projektu serveru přidejte následující třídu.
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;
}
V souboru projektu serveru Program
zaregistrujte službu:
builder.Services.TryAddScoped<IWebAssemblyHostEnvironment, ServerHostEnvironment>();
V tomto okamžiku IWebAssemblyHostEnvironment lze službu vložit do interaktivní webovéseassembly nebo interaktivní automatické komponenty a použít, jak je znázorněno v části Čtení prostředí v Blazor WebAssembly aplikaci .
Předchozí příklad může ukázat, že je možné mít jiné serverové prostředí než klientské prostředí, které se nedoporučuje a může vést k libovolným výsledkům. Při nastavování prostředí v prostředí je nejlepší shodovat se serverovým a .Client
projektovým prostředímBlazor Web App. V testovací aplikaci zvažte následující scénář:
- Implementujte vlastnost prostředí na straně klienta (
webassembly
) sStaging
prostředím prostřednictvímBlazor.start
. Příklad najdete v části Nastavení prostředí na straně klienta prostřednictvím konfiguračního oddílu po spuštění. - Neměňte soubor na straně
Properties/launchSettings.json
serveru.environmentVariables
Ponechte oddíl s proměnnou prostředí nastavenouASPNETCORE_ENVIRONMENT
naDevelopment
hodnotu .
Hodnotu IWebAssemblyHostEnvironment.Environment změny vlastnosti můžete zobrazit v uživatelském rozhraní.
Když na serveru dojde k předběžnému vykreslování, komponenta se vykreslí v Development
prostředí:
Environment: Development
Pokud je komponenta znovu vyřazuje jen o sekundu nebo dvě později, po Blazor stažení sady a aktivaci modulu runtime .NET WebAssembly se hodnoty změní tak, aby odrážely, že klient pracuje v Staging
prostředí na klientovi:
Environment: Staging
Předchozí příklad ukazuje, proč doporučujeme nastavit serverové prostředí tak, aby odpovídalo klientskému prostředí pro vývoj, testování a produkční nasazení.
Další informace najdete v části Služby na straně klienta, které se nepodaří vyřešit během předdefinování části článku Režimy vykreslování, který se zobrazí dále v Blazor dokumentaci.
Čtení prostředí na straně klienta během spouštění
Během spuštění WebAssemblyHostBuilder zpřístupňuje IWebAssemblyHostEnvironment HostEnvironment prostřednictvím vlastnosti, 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í metody rozšíření pohodlí poskytované prostřednictvím WebAssemblyHostEnvironmentExtensions kontroly aktuálního prostředí pro Development
, Production
Staging
, a 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í, NavigationManager pokud služba není k dispozici.