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 Developmenthodnotu . 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ů:

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ů:

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 webAssemblyenvironment>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:

  1. 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í je appsettings.Staging.json. Pokud je appsettings.staging.json název souboru (malými písmenys), soubor se nenachází a nastavení v souboru se v Staging prostředí nepoužívá.

  2. V případě nasazení sady Visual Studio ověřte, že je aplikace nasazená do správného slotu nasazení. U aplikace s názvem BlazorAzureAppSamplese aplikace nasadí do slotu Staging nasazení.

  3. Na webu Azure Portal pro slot nasazení prostředí nastavte prostředí s ASPNETCORE_ENVIRONMENT nastavením aplikace. Pro aplikaci s názvem BlazorAzureAppSamplemá pracovní slot služby App Service název BlazorAzureAppSample/Staging. Pro konfiguraci slotu Staging vytvořte nastavení ASPNETCORE_ENVIRONMENT aplikace s hodnotou Staging. 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) s Staging prostředím prostřednictvím Blazor.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í nastavenou ASPNETCORE_ENVIRONMENT na Developmenthodnotu .

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, ProductionStaging, 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.

Další materiály