Megosztás a következőn keresztül:


ASP.NET Core-környezetek Blazor

Megjegyzés:

Ez nem a cikk legújabb verziója. Az aktuális kiadásról a cikk .NET 10-es verziójában olvashat.

Figyelmeztetés

A ASP.NET Core ezen verziója már nem támogatott. További információ: .NET és .NET Core támogatási szabályzat. A jelen cikk .NET 9-es verzióját lásd az aktuális kiadásért .

Ez a cikk bemutatja, hogyan konfigurálhatja és olvashatja el a környezetet egy Blazor alkalmazásban.

Ha helyileg futtat egy alkalmazást, a környezet alapértelmezés szerint a következő lesz Development: . Az alkalmazás közzétételekor a környezet alapértelmezés szerint a következő lesz Production: .

A következő konvenciókat javasoljuk:

  • A helyi fejlesztéshez mindig használja a "Development" környezet nevét. Ennek az az oka, hogy a ASP.NET Core-keretrendszer pontosan ezt a nevet várja az alkalmazás és az eszköz helyi fejlesztési futtatásához való konfigurálásakor.

  • Teszteléshez, előkészítéshez és éles környezetekhez mindig tegye közzé és telepítse az alkalmazást. Bármilyen környezetelnevezési sémát használhat a közzétett alkalmazásoknál, de mindig olyan alkalmazásbeállítási fájlneveket használjon, amelyek környezetszegmense pontosan egyezik a környezet nevével. Az előkészítéshez használja a "Staging" (nagybetűs "S") nevet a környezet neveként, és nevezze el az alkalmazásbeállítások fájlját ennek megfelelően (appsettings.Staging.json). Éles környezetben használja a "Production" (nagybetűs "P") nevet a környezet neveként, és adja meg az alkalmazásbeállítások fájljának a megfelelő nevet (appsettings.Production.json).

A környezet beállítása

A környezet a következő módszerek bármelyikével van beállítva:

Egy ügyfélen Blazor Web Appa környezet egy HTML-megjegyzésen keresztül lesz meghatározva a kiszolgálóról, amellyel a fejlesztők nem kommunikálnak:

<!--Blazor-WebAssembly:{"environmentName":"Development", ...}-->

Önálló Blazor WebAssembly alkalmazás esetén állítsa be a környezetet az <WasmApplicationEnvironmentName> alkalmazás projektfájljában (.csproj) található MSBuild tulajdonsággal. A következő példa a környezetet állítja be Staging :

<WasmApplicationEnvironmentName>Staging</WasmApplicationEnvironmentName>

Az alapértelmezett környezetek a Development buildeléshez és Production a közzétételhez tartoznak.

A buildelési/közzétételi műveletek során több módszer is létezik a környezet beállítására egy különálló Blazor WebAssembly alkalmazásban, és az ügyfélen induló vagy futó alkalmazások egyik megközelítése:

  • A tulajdonságérték beállítása, amikor a dotnet build vagy a dotnet publish végrehajtásra kerül. Az alábbi példa egy alkalmazás közzétételekor állítja be a környezetet Staging :

    dotnet publish -p:WasmApplicationEnvironmentName=Staging
    
  • Állítsa be a tulajdonságot a buildelés vagy közzététel során az alkalmazás Visual Studióban való konfigurációja alapján. Az alábbi tulajdonságcsoportok használhatók az alkalmazás projektfájljában vagy bármely közzétételi konfigurációs fájlban (.pubxml). Adjon hozzá további tulajdonságcsoportokat a használatban lévő más buildkonfigurációkhoz.

    <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
      <WasmApplicationEnvironmentName>Development</WasmApplicationEnvironmentName>
    </PropertyGroup>
    
    <PropertyGroup Condition="'$(Configuration)' == 'Release'">
      <WasmApplicationEnvironmentName>Production</WasmApplicationEnvironmentName>
    </PropertyGroup>
    
  • A környezet egy közzétételi profil használata alapján állítható be. Az alábbi példában az első feltétel úgy állítja be a környezetet, hogy Development amikor nem használ közzétételi profilt (a profil nélküli buildelési és közzétételi műveletekre is vonatkozik), míg a második feltétel a környezetnek Production a közzétételi profilok használatakor való beállítására vonatkozik:

    <PropertyGroup Condition="'$(PublishProfile)' == ''">
      <WasmApplicationEnvironmentName>Development</WasmApplicationEnvironmentName>
    </PropertyGroup>
    
    <PropertyGroup Condition="'$(PublishProfile)' != ''">
      <WasmApplicationEnvironmentName>Production</WasmApplicationEnvironmentName>
    </PropertyGroup>
    
  • Hozzon létre egy egyéni kiszolgálóoldali webes API-végpontot. Az önálló Blazor WebAssembly alkalmazás a webes API-ból kéri le a környezetét az alkalmazás indításakor vagy igény szerint, miközben fut. Az értéket vagy a WebAssemblyStartOptions-nek kell átadni, vagy a withApplicationEnvironment-vel.

    Megjegyzés:

    A .NET referenciaforrásra mutató dokumentációs hivatkozások általában betöltik az adattár alapértelmezett ágát, amely a .NET következő kiadásának aktuális fejlesztését jelöli. Egy adott kiadás címkéjének kiválasztásához használja az Ágak vagy címkék közötti váltás legördülő listát. További információ: A ASP.NET Core-forráskód (dotnet/AspNetCore.Docs #26205) verziócímkéjének kiválasztása.

Egy ügyfélen Blazor Web Appa környezet egy köztes szoftveren keresztül lesz meghatározva a kiszolgálóról, amely egy fejlécen Blazor-Environmentkeresztül közli a környezetet a böngészővel. A fejléc beállítja a környezetet, amikor az WebAssemblyHost ügyféloldali Program fájlban (WebAssemblyHostBuilder.CreateDefault) jön létre.

A helyileg futó önálló Blazor WebAssembly alkalmazások esetében a fejlesztői kiszolgáló hozzáadja a Blazor-Environment fejlécet az üzemeltetési környezettől kapott környezetnévvel. Az üzemeltetési környezet a projekt ASPNETCORE_ENVIRONMENT fájlja által létrehozott Properties/launchSettings.json környezeti változóból állítja be a környezetet. A projektsablonból létrehozott projekt esetén a környezeti változó alapértelmezett értéke Blazor WebAssemblyDevelopment. További információ: Az ügyféloldali környezet beállítása fejlécszakaszon keresztül .

Egy üzemeltetett Blazor WebAssembly alkalmazás ügyfélén a környezet egy köztes szoftveren keresztül lesz meghatározva a kiszolgálóról, amely egy fejlécen Blazor-Environmentkeresztül közli a környezetet a böngészővel. A fejléc beállítja a környezetet, amikor az WebAssemblyHost ügyféloldali Program fájlban (WebAssemblyHostBuilder.CreateDefault) jön létre.

A helyileg futó önálló Blazor WebAssembly alkalmazások esetében a fejlesztői kiszolgáló hozzáadja a Blazor-Environment fejlécet az üzemeltetési környezettől kapott környezetnévvel. Az üzemeltetési környezet a projekt ASPNETCORE_ENVIRONMENT fájlja által létrehozott Properties/launchSettings.json környezeti változóból állítja be a környezetet. A projektsablonból létrehozott projekt esetén a környezeti változó alapértelmezett értéke Blazor WebAssemblyDevelopment. További információ: Az ügyféloldali környezet beállítása fejlécszakaszon keresztül .

Ha az alkalmazás helyileg fut a fejlesztés során, az alkalmazás alapértelmezés szerint a Development környezetet használja. Az alkalmazás közzététele alapértelmezetten a környezetet Production-re állítja.

Az ASP.NET Core alkalmazás konfigurációjával kapcsolatos általános útmutatásért tekintse meg az ASP.NET Core futtatókörnyezeteket. A kiszolgálóoldali alkalmazás konfigurálásához a fejlesztési és tesztelési (például Development) környezeten kívüli statikus fájlok esetén lásd a Staging dokumentációt.

Az ügyféloldali környezet beállítása indítási konfigurációval Blazor

Az alábbi példa Blazor elindul a Staging környezetben, ha a gazdagép neve tartalmazza localhost. Ellenkező esetben a környezet az alapértelmezett értékre van állítva.

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>

Az előző példában a {BLAZOR SCRIPT} helyőrző a Blazor szkript elérési útja és fájlneve. A szkript helyéről lásd ASP.NET Core Blazor projektstruktúra.

Megjegyzés:

Ha Blazor Web Appa webAssembly>environmenttulajdonságot konfigurációban Blazor.start állítja be, célszerű a kiszolgálóoldali környezetet a tulajdonságon environment beállított környezethez igazítani. Ellenkező esetben a kiszolgálón az előrendelés más környezetben működik, mint az ügyfél renderelése, ami tetszőleges hatásokat eredményez. A környezet Blazor Web Appbeállításával kapcsolatos általános útmutatásért lásd a ASP.NET Core futtatókörnyezeteket.

Önálló Blazor WebAssembly:

<script src="{BLAZOR SCRIPT}" autostart="false"></script>
<script>
  if (window.location.hostname.includes("localhost")) {
    Blazor.start({
      environment: "Staging"
    });
  } else {
    Blazor.start();
  }
</script>

Az előző példában a {BLAZOR SCRIPT} helyőrző a Blazor szkript elérési útja és fájlneve. A szkript helyéről lásd ASP.NET Core Blazor projektstruktúra.

environment A tulajdonság használata felülírja a fejléc által Blazor-Environmentbeállított környezetet.

Az előző megközelítés úgy állítja be az ügyfél környezetét, hogy nem változtatja meg a Blazor-Environment fejléc értékét, és nem módosítja a kiszolgálóprojekt konzolnaplózását az indítási környezetről egy Blazor Web App globális Interaktív WebAssembly-renderelést alkalmazó környezetben.

Ha egy különálló Blazor WebAssembly alkalmazásban vagy a .ClientBlazor Web App projektjében szeretné naplózni a környezetet a konzolon, helyezze a következő C#-kódot a Program fájlba, miután a WebAssemblyHost-t létrehozta a WebAssemblyHostBuilder.CreateDefault-el, és mielőtt a projektet építő és futtató sort (await builder.Build().RunAsync();) végrehajtja:

Console.WriteLine(
    $"Client Hosting Environment: {builder.HostEnvironment.Environment}");

További információt a Blazor indításról az ASP.NET Core Blazor indításicímű témakörben találhat.

Az ügyféloldali környezet beállítása fejlécen keresztül

Blazor WebAssembly az alkalmazások a fejléc használatával beállíthatják a Blazor-Environment környezetet. Pontosabban, a _framework/blazor.boot.json fájlra be kell állítani a válaszfejlécet, de a fájkiszolgáló válaszain nem árt, ha más Blazor fájlkérelmekre vagy a teljes Blazor üzembe helyezésre is beállítják a fejlécet.

Bár a Blazor keretrendszer a fejléc nevét vegyes nagy- és kisbetűs kebab-esetben adja meg (Blazor-Environment), nyugodtan használhatja teljes kisbetűs vagy teljes nagybetűs kebab-esetben is (blazor-environment, BLAZOR-ENVIRONMENT).

Ha a helyi fejlesztés a "beépített fejlesztői kiszolgálóvalBlazor" fut, a fejléc értékét Blazor-Environment a projekt fájljában ASPNETCORE_ENVIRONMENT lévő környezeti változó értékének Properties/launchSettings.json beállításával szabályozhatja. Ha helyileg fut a fejlesztői kiszolgálóval, az alkalmazás környezetének Blazor.start meghatározásához a konfigurációs (environment kulcs)>Blazor-Environment válaszfejléc (blazor.boot.json fájl) környezeti változó () >ASPNETCORE_ENVIRONMENT az elsőbbséget élvezilaunchSettings.json. Nem használhatja a ASPNETCORE_ENVIRONMENT környezeti változó (launchSettings.json) megközelítést egy üzembe helyezett Blazor WebAssembly alkalmazáshoz. A technika csak az alkalmazás helyi futtatásainál működik a fejlesztői kiszolgálóval.

IIS

Az alábbi IIS-példában az egyéni fejléc (Blazor-Environment) hozzáadódik a közzétett web.config fájlhoz. A web.config fájl abban a bin/Release/{TARGET FRAMEWORK}/publish mappában található, ahol a {TARGET FRAMEWORK} helyőrző a cél keretrendszer:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    ...
    <httpProtocol>
      <customHeaders>
        <add name="Blazor-Environment" value="Staging" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

Megjegyzés:

Ha olyan egyéni web.config fájlt szeretne használni az IIS-hez, amely nem íródik felül, amikor az alkalmazást közzéteszik a mappában, olvassa publish című témakört.Blazor WebAssembly

Nginx

Nginx-kiszolgálók esetén használja a add_header következő irányelvet ngx_http_headers_module:

http {
    server {
        ...
        location / {
            ...
            add_header Blazor-Environment "Staging";
        }
    }
}

További információt a következő források tartalmaznak:

Apache

Apache-kiszolgálók esetén használja a Header modul irányelvét mod_headers :

<VirtualHost *:80>
    ...
    Header set Blazor-Environment "Staging"
    ...
</VirtualHost>

További információt a következő források tartalmaznak:

Az Azure App Service környezetének beállítása

Önálló Blazor WebAssembly alkalmazások esetén manuálisan is beállíthatja a környezetet az indítási konfiguráción vagy a Blazor-Environment fejlécen keresztül.

Kiszolgálóoldali alkalmazások esetén állítsa be a környezetet egy ASPNETCORE_ENVIRONMENT azure-beli alkalmazásbeállításon keresztül:

  1. Győződjön meg arról, hogy az alkalmazásbeállítások fájlneveiben a környezeti szegmensek burkolata pontosan megegyezik a környezetnévházzal. Például a Staging környezethez tartozó alkalmazásbeállítások fájlneve a appsettings.Staging.json. Ha a fájl neve appsettings.staging.json (kisbetűs "s"), a fájl nem található, és a fájl beállításai nem használhatók a Staging környezetben.

  2. A Visual Studio üzembe helyezéséhez győződjön meg arról, hogy az alkalmazás a megfelelő üzembehelyezési ponton van üzembe helyezve. Egy elnevezett BlazorAzureAppSamplealkalmazás esetében az alkalmazás üzembe helyezése az Staging üzembehelyezési ponton történik.

  3. A környezet üzembehelyezési pontjához tartozó Azure Portalon állítsa be a környezetet az ASPNETCORE_ENVIRONMENT alkalmazásbeállítással. Egy BlazorAzureAppSample elnevezésű alkalmazás esetében az előkészítési App Service-foglalat neve BlazorAzureAppSample/Staging. A Staging pont konfigurációjához hozzon létre egy alkalmazásbeállítást ASPNETCORE_ENVIRONMENT a következő Stagingértékkel: . Az üzembehelyezési pont beállítása engedélyezve van a beállításhoz.

Amikor egy böngészőben kérik, az BlazorAzureAppSample/Staging alkalmazás betöltődik a környezetben a Staging következő helyen https://blazorazureappsample-staging.azurewebsites.net: .

Amikor az alkalmazás be van töltve a böngészőbe, a blazor.boot.json válaszfejléc mutatja, hogy a Blazor-Environment fejléc értéke Staging.

A fájlból származó appsettings.{ENVIRONMENT}.json alkalmazásbeállításokat az alkalmazás tölti be, ahol a {ENVIRONMENT} helyőrző az alkalmazás környezete. Az előző példában a appsettings.Staging.json fájl beállításai betöltődnek.

A környezet olvasása egy Blazor WebAssembly alkalmazásban

Szerezze be az alkalmazás környezetét egy összetevőn keresztül úgy, hogy beinjektálja a IWebAssemblyHostEnvironment-t, és elolvassa a Environment tulajdonságot.

ReadEnvironment.razor:

@page "/read-environment"
@using Microsoft.AspNetCore.Components.WebAssembly.Hosting
@inject IWebAssemblyHostEnvironment Env

<h1>Environment example</h1>

<p>Environment: @Env.Environment</p>

Olvasd el a környezetet ügyféloldalon egy Blazor Web App

Feltételezve, hogy az előrendelés nincs letiltva egy összetevő vagy az alkalmazás esetében, a .Client projekt egyik összetevője előrerendelt a kiszolgálón. Mivel a kiszolgáló nem rendelkezik regisztrált IWebAssemblyHostEnvironment szolgáltatással, nem lehet beszúrni a szolgáltatást, és a szolgáltatás implementációjának gazdakörnyezet kiterjesztési módszereit és tulajdonságait használni a kiszolgáló előzetes renderelése során. Ha a szolgáltatást egy Interaktív WebAssembly vagy Interaktív automatikus összetevőbe injektálja, az a következő futtatókörnyezeti hibát eredményezi:

There is no registered service of type 'Microsoft.AspNetCore.Components.WebAssembly.Hosting.IWebAssemblyHostEnvironment'.

Ennek kezeléséhez hozzon létre egy egyéni szolgáltatás-implementációt IWebAssemblyHostEnvironment a kiszolgálón. További információkért és egy példa implementációért olvassa el az szerveren található egyéni szolgáltatás implementációját az Előrenderelési cikkben, amely később jelenik meg a Blazor dokumentációban.

Az ügyféloldali környezet olvasása indításkor

Az indítás során a WebAssemblyHostBuilder tulajdonágon keresztül a IWebAssemblyHostEnvironment elérhetővé teszi a HostEnvironment-t, amely lehetővé teszi a környezetspecifikus logikát a gazdagépszerkesztő kódjában.

A Program fájlban:

if (builder.HostEnvironment.Environment == "Custom")
{
    ...
};

A következő kényelmi kiterjesztési módszerek WebAssemblyHostEnvironmentExtensions lehetővé teszik az aktuális környezet ellenőrzését a Development, Production, Staging és egyéni környezetnevekkel szemben.

A Program fájlban:

if (builder.HostEnvironment.IsStaging())
{
    ...
};

if (builder.HostEnvironment.IsEnvironment("Custom"))
{
    ...
};

A IWebAssemblyHostEnvironment.BaseAddress tulajdonság akkor használható indításkor, ha a NavigationManager szolgáltatás nem érhető el.

További erőforrások