Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga
Nie jest to najnowsza wersja tego artykułu. Aby zapoznać się z aktualną wersją, zobacz artykuł w wersji .NET 10.
Ostrzeżenie
Ta wersja ASP.NET Core nie jest już obsługiwana. Aby uzyskać więcej informacji, zobacz zasady pomocy technicznej platformy .NET i platformy .NET Core. Aby zapoznać się z aktualnym wydaniem, zobacz wersję tego artykułu dla platformy .NET 9.
W tym artykule wyjaśniono, jak skonfigurować i odczytać środowisko w Blazor aplikacji.
W przypadku lokalnego uruchamiania aplikacji środowisko domyślnie ma wartość Development. Po opublikowaniu aplikacji środowisko domyślnie ma wartość Production.
Zalecamy następujące konwencje:
Zawsze używaj nazwy środowiska "
Development" na potrzeby programowania lokalnego. Dzieje się tak, ponieważ platforma ASP.NET Core oczekuje dokładnie tej nazwy podczas konfigurowania aplikacji i narzędzi dla lokalnych uruchomień programowania aplikacji.W przypadku środowisk testowych, przejściowych i produkcyjnych zawsze publikuj i wdrażaj aplikację. Można użyć dowolnego schematu nazewnictwa środowiska dla opublikowanych aplikacji, ale zawsze używaj nazw plików ustawień aplikacji z segmentem środowiska, którego wielkość liter dokładnie odpowiada nazwie środowiska. W przypadku środowiska testowego użyj wartości "
Staging" (capital "S") jako nazwy środowiska i nazwij plik ustawień aplikacji zgodnie (appsettings.Staging.json). W przypadku środowiska produkcyjnego użyj ciągu "Production" (capital "P") jako nazwy środowiska i nadaj plikowi ustawień aplikacji nazwę zgodną (appsettings.Production.json).
Ustawianie środowiska
Środowisko jest ustawione przy użyciu dowolnego z następujących podejść:
- Blazor Web App lub Blazor Server: Użyj dowolnej z metod opisanych w środowiskach uruchomieniowych ASP.NET Core dla ogólnych aplikacji ASP.NET Core.
- Dowolna Blazor aplikacja: Blazor uruchamianie konfiguracji
-
Blazor WebAssembly: Autonomiczna
<WasmApplicationEnvironmentName>cecha
Na kliencie programu Blazor Web Appśrodowisko jest określane z serwera za pośrednictwem komentarza HTML, z którego deweloperzy nie korzystają:
<!--Blazor-WebAssembly:{"environmentName":"Development", ...}-->
W przypadku aplikacji autonomicznej Blazor WebAssembly ustaw środowisko za pomocą <WasmApplicationEnvironmentName> właściwości MSBuild w pliku projektu aplikacji (.csproj). Poniższy przykład ustawia Staging środowisko:
<WasmApplicationEnvironmentName>Staging</WasmApplicationEnvironmentName>
Domyślne środowiska są Development przeznaczone do kompilacji i Production publikowania.
Istnieje kilka metod ustawiania środowiska w aplikacji autonomicznej Blazor WebAssembly podczas operacji kompilacji/publikowania oraz jedno podejście do uruchamiania lub uruchamiania aplikacji na kliencie:
Ustaw wartość właściwości, gdy
dotnet buildlubdotnet publishjest wykonywane. Poniższy przykład ustawia środowisko naStaging, gdy aplikacja jest publikowana.dotnet publish -p:WasmApplicationEnvironmentName=StagingUstaw właściwość podczas kompilacji lub publikowania na podstawie konfiguracji aplikacji w programie Visual Studio. Następujące grupy właściwości mogą być używane w pliku projektu aplikacji lub w dowolnym pliku konfiguracji publikowania (
.pubxml). Dodaj dodatkowe grupy właściwości dla innych używanych konfiguracji kompilacji.<PropertyGroup Condition="'$(Configuration)' == 'Debug'"> <WasmApplicationEnvironmentName>Development</WasmApplicationEnvironmentName> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)' == 'Release'"> <WasmApplicationEnvironmentName>Production</WasmApplicationEnvironmentName> </PropertyGroup>Konfiguracja środowiska może być ustawiona na podstawie użycia profilu publikowania. W poniższym przykładzie pierwszy warunek ustawia środowisko na
Development, gdy nie jest używany profil publikowania (dotyczy to zarówno operacji kompilacji, jak i publikowania bez profilu), natomiast drugi warunek ustawia środowisko naProduction, gdy używany jest jakikolwiek profil publikowania.<PropertyGroup Condition="'$(PublishProfile)' == ''"> <WasmApplicationEnvironmentName>Development</WasmApplicationEnvironmentName> </PropertyGroup> <PropertyGroup Condition="'$(PublishProfile)' != ''"> <WasmApplicationEnvironmentName>Production</WasmApplicationEnvironmentName> </PropertyGroup>Utwórz niestandardowy webowy punkt końcowy interfejsu API po stronie serwera. Aplikacja autonomiczna Blazor WebAssembly żąda swojego środowiska z internetowego interfejsu API podczas uruchamiania aplikacji lub na żądanie podczas jej działania. Wartość powinna zostać przekazana do
WebAssemblyStartOptionslubwithApplicationEnvironment.Uwaga
Linki dokumentacyjne do źródła referencyjnego .NET zwykle ładują domyślną gałąź repozytorium, która odzwierciedla obecne prace rozwojowe nad nadchodzącą wersją .NET. Aby wybrać tag dla określonej wersji, użyj listy rozwijanej Przełącz gałęzie lub tagi. Aby uzyskać więcej informacji, zobacz Jak wybrać tag wersji kodu źródłowego ASP.NET Core (dotnet/AspNetCore.Docs #26205).
- Blazor Web App lub Blazor Server: Użyj dowolnej z metod opisanych w środowiskach uruchomieniowych ASP.NET Core dla ogólnych aplikacji ASP.NET Core.
- Dowolna Blazor aplikacja:
-
Blazor WebAssembly:
Blazor-Environmentnagłówek
Na kliencie programu Blazor Web App, środowisko jest określane z serwera za pośrednictwem oprogramowania pośredniczącego, które przekazuje informacje o środowisku do przeglądarki poprzez nagłówek o nazwie Blazor-Environment. Nagłówek ustawia środowisko podczas tworzenia WebAssemblyHost w pliku po stronie klienta Program (WebAssemblyHostBuilder.CreateDefault).
W przypadku autonomicznej Blazor WebAssembly aplikacji działającej lokalnie, serwer deweloperski dodaje nagłówek Blazor-Environment z nazwą środowiska uzyskaną ze środowiska hostingu. Środowisko hostingu ustawia środowisko ze zmiennej ASPNETCORE_ENVIRONMENT środowiskowej ustanowionej przez plik projektu Properties/launchSettings.json . Wartość domyślna zmiennej środowiskowej w projekcie utworzonym na podstawie szablonu Blazor WebAssembly projektu to Development. Aby uzyskać więcej informacji, zobacz sekcję Ustawianie środowiska po stronie klienta za pomocą nagłówka .
- Blazor Server: Użyj dowolnego podejścia opisanego w środowiskach uruchomieniowych ASP.NET Core dla ogólnych aplikacji ASP.NET Core.
- Blazor Server lub Blazor WebAssembly:
-
Blazor WebAssembly:
Blazor-Environmentnagłówek
Na kliencie hostowanej Blazor WebAssembly aplikacji środowisko jest określane z serwera za pośrednictwem oprogramowania pośredniczącego, które komunikuje środowisko do przeglądarki za pośrednictwem nagłówka o nazwie Blazor-Environment. Nagłówek ustawia środowisko podczas tworzenia WebAssemblyHost w pliku po stronie klienta Program (WebAssemblyHostBuilder.CreateDefault).
W przypadku autonomicznej Blazor WebAssembly aplikacji działającej lokalnie, serwer deweloperski dodaje nagłówek Blazor-Environment z nazwą środowiska uzyskaną ze środowiska hostingu. Środowisko hostingu ustawia środowisko ze zmiennej ASPNETCORE_ENVIRONMENT środowiskowej ustanowionej przez plik projektu Properties/launchSettings.json . Wartość domyślna zmiennej środowiskowej w projekcie utworzonym na podstawie szablonu Blazor WebAssembly projektu to Development. Aby uzyskać więcej informacji, zobacz sekcję Ustawianie środowiska po stronie klienta za pomocą nagłówka .
W przypadku aplikacji działających lokalnie w środowisku deweloperskim, aplikacja domyślnie korzysta ze środowiska Development. Opublikowanie aplikacji ustawia środowisko domyślnie na Production.
Aby uzyskać ogólne wskazówki dotyczące konfiguracji aplikacji ASP.NET Core, zobacz ASP.NET Core runtime environments (Środowiska uruchomieniowe ASP.NET Core). Aby uzyskać informacje na temat konfiguracji aplikacji po stronie serwera ze statycznymi plikami w środowiskach innych niż Development środowisko podczas programowania i testowania (na przykład Staging), zobacz Pliki statyczne w programie ASP.NET Core.
Ustawianie środowiska po stronie klienta za pomocą Blazor konfiguracji uruchamiania
Poniższy przykład rozpoczyna Blazor w środowisku Staging, jeśli nazwa hosta zawiera localhost. W przeciwnym razie środowisko jest ustawione na wartość domyślną.
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>
W poprzednim przykładzie symbol zastępczy {BLAZOR SCRIPT} to ścieżka i nazwa pliku skryptu Blazor. Aby uzyskać informacje o lokalizacji skryptu, zobacz Blazor.
Uwaga
W przypadku Blazor Web Apps, które ustawiają właściwość webAssembly>environment w konfiguracji Blazor.start, warto dopasować środowisko po stronie serwera do środowiska ustawionego na właściwości environment. W przeciwnym razie wstępne renderowanie na serwerze działa w innym środowisku niż renderowanie na kliencie, co powoduje dowolne skutki. Ogólne wskazówki dotyczące ustawiania środowiska dla programu Blazor Web Appmożna znaleźć w temacie ASP.NET Core runtime environments (Środowiska uruchomieniowe ASP.NET Core).
Samodzielny Blazor WebAssembly:
<script src="{BLAZOR SCRIPT}" autostart="false"></script>
<script>
if (window.location.hostname.includes("localhost")) {
Blazor.start({
environment: "Staging"
});
} else {
Blazor.start();
}
</script>
W poprzednim przykładzie symbol zastępczy {BLAZOR SCRIPT} to ścieżka i nazwa pliku skryptu Blazor. Aby uzyskać informacje o lokalizacji skryptu, zobacz Blazor.
Właściwość environment nadpisuje środowisko ustawione przez nagłówek Blazor-Environment.
Powyższe podejście określa środowisko klienta bez zmiany wartości nagłówka Blazor-Environment, ani nie wpływa na rejestrowanie w konsoli projektu serwera środowiska uruchamiania dla Blazor Web App elementu, który przyjął globalne renderowanie interakcyjne WebAssembly.
Aby zarejestrować środowisko w konsoli w aplikacji autonomicznej Blazor WebAssembly lub w projekcie .Client związanym z Blazor Web App, umieść następujący kod języka C# w pliku Program po utworzeniu WebAssemblyHost przez WebAssemblyHostBuilder.CreateDefault i przed wierszem, który kompiluje i uruchamia projekt (await builder.Build().RunAsync();):
Console.WriteLine(
$"Client Hosting Environment: {builder.HostEnvironment.Environment}");
Aby uzyskać więcej informacji na temat uruchamiania platformy Blazor, zobacz Uruchamianie platformy ASP.NET Core Blazor.
Ustawianie środowiska po stronie klienta za pomocą nagłówka
Blazor WebAssembly aplikacje mogą ustawiać środowisko za pomocą nagłówka Blazor-Environment . W szczególności nagłówek odpowiedzi musi być ustawiony dla _framework/blazor.boot.json pliku, ale nie zaszkodzi ustawienie nagłówka w odpowiedziach na żądaniach plików z serwera dla innych Blazor żądań plików lub całego procesu Blazor wdrożenia.
Blazor Mimo że framework wystawia nazwę nagłówka w formacie kebab z mieszanym formatem liter (Blazor-Environment), możesz użyć całkowicie małymi literami lub całkowicie wielkimi literami w formacie kebab (blazor-environment, BLAZOR-ENVIRONMENT).
W przypadku lokalnych sesji programistycznych z Blazor wbudowanym serwerem programistycznym, możesz kontrolować wartość nagłówka Blazor-Environment poprzez ustawienie wartości zmiennej środowiskowej ASPNETCORE_ENVIRONMENT w pliku projektu Properties/launchSettings.json. W przypadku uruchamiania lokalnie za pomocą serwera deweloperskiego, kolejność pierwszeństwa przy ustalaniu środowiska aplikacji to Blazor.start konfiguracja (environment klucz)>, nagłówek odpowiedzi (Blazor-Environment plik)blazor.boot.json>, zmienna środowiskowa (ASPNETCORE_ENVIRONMENT)launchSettings.json. Nie można użyć metody zmiennej środowiskowej ASPNETCORE_ENVIRONMENT (launchSettings.json) dla wdrożonej Blazor WebAssembly aplikacji. Technika ta działa tylko z serwerem deweloperów w lokalnych uruchomieniach aplikacji.
IIS
W poniższym przykładzie dla usług IIS nagłówek niestandardowy (Blazor-Environment) jest dodawany do opublikowanego web.config pliku. Plik web.config znajduje się w folderze bin/Release/{TARGET FRAMEWORK}/publish, gdzie {TARGET FRAMEWORK} jest symbolem zastępczym dla docelowej struktury.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
...
<httpProtocol>
<customHeaders>
<add name="Blazor-Environment" value="Staging" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Uwaga
Aby użyć pliku web.config dla IIS, który nie jest zastępowany podczas publikowania aplikacji do folderu publish, zobacz Hostowanie i wdrażanie ASP.NET Core Blazor WebAssembly z IIS.
Nginx
W przypadku serwerów Nginx użyj dyrektywy add_header z ngx_http_headers_module.
http {
server {
...
location / {
...
add_header Blazor-Environment "Staging";
}
}
}
Aby uzyskać więcej informacji, zobacz następujące zasoby:
- Dokumentacja serwera Nginx
- Hostowanie i wdrażanie ASP.NET Core Blazor WebAssembly za pomocą serwera Nginx
Apasz
W przypadku serwerów Apache użyj Header dyrektywy z modułu mod_headers :
<VirtualHost *:80>
...
Header set Blazor-Environment "Staging"
...
</VirtualHost>
Aby uzyskać więcej informacji, zobacz następujące zasoby:
-
Dokumentacja platformy Apache (wyszukaj najnowszą wersję "
mod_headers") - Hostowanie i wdrażanie ASP.NET Core Blazor WebAssembly za pomocą platformy Apache
Ustawianie środowiska dla usługi Azure App Service
W przypadku aplikacji autonomicznej Blazor WebAssembly można ręcznie ustawić środowisko za pomocą konfiguracji początkowej lub nagłówkaBlazor-Environment.
W przypadku aplikacji po stronie serwera ustaw środowisko za pomocą ASPNETCORE_ENVIRONMENT ustawienia aplikacji na platformie Azure:
Upewnij się, że wielkość liter segmentów środowiska w nazwach plików ustawień aplikacji jest zgodna z wielkością liter nazwy środowiska. Na przykład zgodna nazwa pliku ustawień aplikacji dla
Stagingśrodowiska toappsettings.Staging.json. Jeśli nazwa pliku toappsettings.staging.json(małe litery „s”), plik nie jest zlokalizowany, a ustawienia w pliku nie są używane w środowiskuStaging.W przypadku wdrożenia programu Visual Studio upewnij się, że aplikacja została wdrożona w odpowiednim miejscu wdrożenia. W przypadku aplikacji o nazwie
BlazorAzureAppSampleaplikacja jest wdrażana wStagingmiejscu wdrożenia.W portalu Azure dla slotu wdrożeniowego środowiska ustaw środowisko z użyciem ustawienia aplikacji
ASPNETCORE_ENVIRONMENT. W przypadku aplikacji o nazwieBlazorAzureAppSample, przejściowe gniazdo App Service nosi nazwęBlazorAzureAppSample/Staging. Dla konfiguracji slotuStaging, utwórz ustawienie aplikacji dlaASPNETCORE_ENVIRONMENTo wartościStaging. Ustawienie Miejsca wdrożenia jest włączone dla tego ustawienia.
Gdy aplikacja BlazorAzureAppSample/Staging jest wywoływana w przeglądarce, ładuje się w środowisku Staging przy https://blazorazureappsample-staging.azurewebsites.net.
Po załadowaniu aplikacji w przeglądarce, kolekcja nagłówków odpowiedzi wskazuje, że wartość nagłówka blazor.boot.json to Blazor-Environment.
Ustawienia aplikacji z pliku appsettings.{ENVIRONMENT}.json są ładowane przez aplikację, gdzie {ENVIRONMENT} element zastępczy jest środowiskiem aplikacji. W poprzednim przykładzie są ładowane ustawienia z appsettings.Staging.json pliku.
Odczytywanie otoczenia w aplikacji Blazor WebAssembly
Uzyskaj środowisko aplikacji w składniku, wstrzykując IWebAssemblyHostEnvironment i odczytując właściwość Environment.
ReadEnvironment.razor:
@page "/read-environment"
@using Microsoft.AspNetCore.Components.WebAssembly.Hosting
@inject IWebAssemblyHostEnvironment Env
<h1>Environment example</h1>
<p>Environment: @Env.Environment</p>
Odczytywanie środowiska po stronie klienta w Blazor Web App
Zakładając, że prerenderowanie nie jest wyłączone dla składnika lub aplikacji, składnik w projekcie .Client jest prerenderowany na serwerze. Ponieważ serwer nie ma w swoim rejestrze zarejestrowanej usługi IWebAssemblyHostEnvironment, nie można wstrzyknąć tej usługi ani skorzystać z metod rozszerzeń i właściwości środowiska hosta związanych z implementacją tej usługi podczas prerenderingu serwera. Wstrzykiwanie usługi do interakcyjnego składnika WebAssembly lub Interactive Auto powoduje następujący błąd środowiska uruchomieniowego:
There is no registered service of type 'Microsoft.AspNetCore.Components.WebAssembly.Hosting.IWebAssemblyHostEnvironment'.
Aby rozwiązać ten problem, utwórz niestandardową implementację usługi dla IWebAssemblyHostEnvironment na serwerze. Aby uzyskać więcej informacji i przykładową implementację, zobacz sekcję Implementacja usługi niestandardowej na serwerze artykułu Prerendering , który pojawia się w Blazor dalszej części dokumentacji.
Odczytywanie środowiska po stronie klienta podczas uruchamiania
Podczas uruchamiania, WebAssemblyHostBuilder udostępnia właściwość IWebAssemblyHostEnvironment, co umożliwia wykorzystanie logiki specyficznej dla środowiska w kodzie budowniczego hosta.
W pliku Program:
if (builder.HostEnvironment.Environment == "Custom")
{
...
};
Następujące wygodne metody rozszerzenia udostępniane przez WebAssemblyHostEnvironmentExtensions umożliwiają sprawdzanie bieżącego środowiska dla Development, Production, Staging oraz niestandardowych nazw środowisk:
W pliku Program:
if (builder.HostEnvironment.IsStaging())
{
...
};
if (builder.HostEnvironment.IsEnvironment("Custom"))
{
...
};
Właściwość IWebAssemblyHostEnvironment.BaseAddress może być używana podczas uruchamiania, gdy usługa NavigationManager nie jest dostępna.
Dodatkowe zasoby
- uruchamianie ASP.NET Core Blazor
- środowiska uruchomieniowe ASP.NET Core
-
Blazor przykłady repozytoriów GitHub (
dotnet/blazor-samples) (jak pobrać)