Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Varning
Den här versionen av ASP.NET Core stöds inte längre. Mer information finns i .NET och .NET Core Support Policy. För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .
Viktigt!
Den här informationen gäller en förhandsversionsprodukt som kan ändras avsevärt innan den släpps kommersiellt. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, med avseende på den information som tillhandahålls här.
För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .
Den här artikeln beskriver hur du konfigurerar och läser miljön i en Blazor app.
När du kör en app lokalt är miljön som standard Development. När appen publiceras är miljön som standard Production.
Vi rekommenderar följande konventioner:
- Använd alltid miljönamnet " - Development" för lokal utveckling. Det beror på att ASP.NET Core Framework förväntar sig exakt det namnet när du konfigurerar appen och verktygen för lokala utvecklingskörningar av en app.
- För testnings-, mellanlagrings- och produktionsmiljöer ska du alltid publicera och distribuera appen. Du kan använda valfritt miljönamnschema som du vill för publicerade appar, men alltid använda filnamn för appinställningar med hölje för miljösegmentet som exakt matchar miljönamnet. För mellanlagring använder du " - Staging" (versalt "S") som miljönamn och namnger den appinställningsfil som ska matcha (- appsettings.Staging.json). För produktion använder du "- Production" (versalt "P") som miljönamn och namnger appens inställningsfil som ska matcha (- appsettings.Production.json).
Ange miljön
Miljön anges med någon av följande metoder:
- Blazor Web App eller Blazor Server: Använd någon av de metoder som beskrivs i ASP.NET Core-körningsmiljöer för allmänna ASP.NET Core-appar.
- Alla Blazor appar: Blazor starta konfigurationen
- Fristående Blazor WebAssembly: <WasmApplicationEnvironmentName>egenskap
På klienten för en Blazor Web Appbestäms miljön från servern via en HTML-kommentar som utvecklare inte interagerar med:
<!--Blazor-WebAssembly:{"environmentName":"Development", ...}-->
För en fristående Blazor WebAssembly app anger du miljön med <WasmApplicationEnvironmentName> egenskapen i appens projektfil (.csproj). I följande exempel anges Staging miljön:
<WasmApplicationEnvironmentName>Staging</WasmApplicationEnvironmentName>
Standardmiljöerna är Development för build och Production för publicering.
- Blazor Web App eller Blazor Server: Använd någon av de metoder som beskrivs i ASP.NET Core-körningsmiljöer för allmänna ASP.NET Core-appar.
- Alla Blazor appar:
- 
              Blazor WebAssembly: Blazor-Environmentrubrik
På klienten för en Blazor Web Appbestäms miljön från servern via ett mellanprogram som kommunicerar miljön till webbläsaren via ett huvud med namnet Blazor-Environment. Header konfigurerar miljön när WebAssemblyHost skapas i klientsidefilen Program (WebAssemblyHostBuilder.CreateDefault).
För en fristående Blazor WebAssembly app som körs lokalt lägger utvecklingsservern till Blazor-Environment header med miljönamnet som hämtas från värdmiljön. Värdmiljön anger miljön från ASPNETCORE_ENVIRONMENT miljövariabeln som upprättats av projektets Properties/launchSettings.json fil. Standardvärdet för miljövariabeln i ett projekt som skapats Blazor WebAssembly från projektmallen är Development. Mer information finns i avsnittet Ange miljön på klientsidan via sidhuvud .
- Blazor Server: Använd någon av de metoder som beskrivs i ASP.NET Core-körningsmiljöer för allmänna ASP.NET Core-appar.
- Blazor Server eller Blazor WebAssembly:
- 
              Blazor WebAssembly: Blazor-Environmentrubrik
På klienten av en hostad Blazor WebAssembly app bestäms miljön från servern via ett mellanprogram som kommunicerar miljön till webbläsaren via en header med namnet Blazor-Environment. Header konfigurerar miljön när WebAssemblyHost skapas i klientsidefilen Program (WebAssemblyHostBuilder.CreateDefault).
För en fristående Blazor WebAssembly app som körs lokalt lägger utvecklingsservern till Blazor-Environment header med miljönamnet som hämtas från värdmiljön. Värdmiljön anger miljön från ASPNETCORE_ENVIRONMENT miljövariabeln som upprättats av projektets Properties/launchSettings.json fil. Standardvärdet för miljövariabeln i ett projekt som skapats Blazor WebAssembly från projektmallen är Development. Mer information finns i avsnittet Ange miljön på klientsidan via sidhuvud .
För appar som körs lokalt under utveckling, använder appen standardmiljön Development. Standardmiljön sätts till Production när appen publiceras.
Allmän vägledning om ASP.NET Core-appkonfiguration finns i ASP.NET Core-körningsmiljöer. För appkonfiguration på serversidan med statiska filer i andra miljöer än Development miljön under utveckling och testning (till exempel Staging), se Statiska filer i ASP.NET Core.
Ange miljön på klientsidan via Blazor startkonfiguration
Följande exempel börjar Blazor i Staging miljön om värdnamnet innehåller localhost. Annars är miljön inställd på standardvärdet.
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>
I det föregående exemplet representerar platshållaren {BLAZOR SCRIPT} skriptsökvägen och filnamnet för Blazor. Platsen för skriptet finns i ASP.NET Core Blazor projektstruktur.
Anmärkning
För Blazor Web Apps som anger webAssembly>environmentegenskapen i Blazor.startkonfigurationen är det klokt att matcha servermiljön med den miljö som angetts för environment egenskapen. Annars fungerar prerendering på servern i en annan miljö än rendering på klienten, vilket resulterar i godtyckliga effekter. Allmän vägledning om hur du anger miljön för en Blazor Web Appfinns i ASP.NET Core Runtime-miljöer.
Fristående Blazor WebAssembly:
<script src="{BLAZOR SCRIPT}" autostart="false"></script>
<script>
  if (window.location.hostname.includes("localhost")) {
    Blazor.start({
      environment: "Staging"
    });
  } else {
    Blazor.start();
  }
</script>
I det föregående exemplet representerar platshållaren {BLAZOR SCRIPT} skriptsökvägen och filnamnet för Blazor. Platsen för skriptet finns i ASP.NET Core Blazor projektstruktur.
              environment Om du använder egenskapen åsidosätts miljön som anges av Blazor-Environment rubriken.
Föregående metod anger klientens miljö utan att ändra Blazor-Environment huvudets värde, och det ändrar inte heller serverprojektets konsolloggning av startmiljön för en Blazor Web App som har implementerat global interaktiv WebAssembly-rendering.
Om du vill logga miljön till konsolen i antingen en fristående Blazor WebAssembly app eller .Client projektet för en Blazor Web Appplacerar du följande C#-kod i Program filen efter att den WebAssemblyHost har skapats med WebAssemblyHostBuilder.CreateDefault och före raden som skapar och kör projektet (await builder.Build().RunAsync();):
Console.WriteLine(
    $"Client Hosting Environment: {builder.HostEnvironment.Environment}");
Mer information om Blazor-uppstart finns i ASP.NET Core Blazor-uppstart.
Ange miljön på klientsidan via sidhuvud
              Blazor WebAssembly appar kan ställa in miljön med Blazor-Environment header. Mer specifikt måste svarshuvudet anges för _framework/blazor.boot.json filen, men det är ingen skada att ange huvudet på filserversvar för andra Blazor filbegäranden eller hela Blazor distributionen.
Även om ramverket utfärdar huvudnamnet i kebab case med blandade bokstäver (Blazor), är du välkommen att använda kebab case med antingen enbart gemener eller enbart versaler (Blazor-Environment, blazor-environment).
För lokala utvecklingskörningar med Blazorden inbyggda utvecklingsservern kan du styra huvudets värde Blazor-Environment genom att ange värdet ASPNETCORE_ENVIRONMENT för miljövariabeln i projektets Properties/launchSettings.json fil. När du kör lokalt med utvecklingsservern är prioritetsordningen för att fastställa appens miljö Blazor.start, environment, . Du kan inte använda ASPNETCORE_ENVIRONMENT miljövariabelmetoden (launchSettings.json) i en distribuerad Blazor WebAssembly-applikation. Tekniken fungerar bara med utvecklingsservern på lokala körningar av appen.
IIS
I följande exempel för IIS läggs den anpassade rubriken (Blazor-Environment) till i den publicerade web.config-filen. Filen web.config finns i bin/Release/{TARGET FRAMEWORK}/publish mappen, där {TARGET FRAMEWORK} platshållaren är målramverket:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    ...
    <httpProtocol>
      <customHeaders>
        <add name="Blazor-Environment" value="Staging" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>
Anmärkning
Information om hur du använder en anpassad web.config fil för IIS som inte skrivs över när appen publiceras till publish mappen finns i Värd och distribuera ASP.NET Core Blazor WebAssembly med IIS.
Nginx
För Nginx-servrar använder du add_header direktivet från ngx_http_headers_module:
http {
    server {
        ...
        location / {
            ...
            add_header Blazor-Environment "Staging";
        }
    }
}
Mer information finns i följande resurser:
Apache
För Apache-servrar använder du Header direktivet från modulen mod_headers :
<VirtualHost *:80>
    ...
    Header set Blazor-Environment "Staging"
    ...
</VirtualHost>
Mer information finns i följande resurser:
- 
              Apache-dokumentation (sök i den senaste versionen efter "mod_headers")
- Hantera och distribuera ASP.NET Core Blazor WebAssembly med Apache
Ange miljön för Azure App Service
För en fristående Blazor WebAssembly app kan du ange miljön manuellt via startkonfigurationen eller Blazor-Environment huvud.
För en app på serversidan anger du miljön via en ASPNETCORE_ENVIRONMENT appinställning i Azure:
- Kontrollera att höljet för miljösegment i filnamnen för appinställningar matchar deras miljönamn exakt. Till exempel är - Stagingfilnamnet för matchande appinställningar för- appsettings.Staging.jsonmiljön . Om filnamnet är- appsettings.staging.json, (gemener- s), så finns inte filen, och inställningarna i filen används inte i miljön för- Staging.
- För Visual Studio-distribution kontrollerar du att appen har distribuerats till rätt distributionsfack. För en app med namnet - BlazorAzureAppSampledistribueras appen till distributionsfacket- Staging.
- I Azure-portalen för miljöns distributionsfack anger du miljön med appinställningen - ASPNETCORE_ENVIRONMENT. För en app med namnet- BlazorAzureAppSampleheter testplatsen för App Service Slot- BlazorAzureAppSample/Staging. För konfigurationen av- Staging-platsen skapar du en appinställning för- ASPNETCORE_ENVIRONMENTmed värdet- Staging. Inställning för distributionsplats är aktiverad för inställningen.
När det BlazorAzureAppSample/Staging begärs i en webbläsare läses appen in i Staging miljön på https://blazorazureappsample-staging.azurewebsites.net.
När appen läses in i webbläsaren, anger svarshuvudsamlingen för blazor.boot.json att huvudvärdet på Blazor-Environment är Staging.
Appinställningarna från appsettings.{ENVIRONMENT}.json-filen laddas av appen, där {ENVIRONMENT} används som platshållare för appens miljö. I föregående exempel läses inställningarna från appsettings.Staging.json filen in.
Läs miljön i en Blazor WebAssembly app
Hämta appens miljö i en komponent genom att injicera IWebAssemblyHostEnvironment och läsa egenskapen Environment.
              ReadEnvironment.razor:
@page "/read-environment"
@using Microsoft.AspNetCore.Components.WebAssembly.Hosting
@inject IWebAssemblyHostEnvironment Env
<h1>Environment example</h1>
<p>Environment: @Env.Environment</p>
Läs miljön på klientsidan i en Blazor Web App
Förutsatt att prerendering inte är inaktiverat för en komponent eller app, förinstalleras en komponent i .Client projektet på servern. Eftersom servern inte har någon registrerad IWebAssemblyHostEnvironment tjänst går det inte att mata in tjänsten och använda tjänstimplementeringens värdmiljötilläggsmetoder och egenskaper under serverförbegränsningen. Om du matar in tjänsten i en interaktiv WebAssembly- eller interaktiv autokomponent resulterar det i följande körningsfel:
There is no registered service of type 'Microsoft.AspNetCore.Components.WebAssembly.Hosting.IWebAssemblyHostEnvironment'.
Du kan åtgärda detta genom att skapa en anpassad tjänstimplementering för IWebAssemblyHostEnvironment på servern. Mer information och en exempelimplementering finns i custom service-implementeringen på serveravsnittet i artikeln Prerendering , som visas senare i dokumentationen Blazor .
Läs miljön på klientsidan under starten
Under uppstarten exponeras WebAssemblyHostBuilder via IWebAssemblyHostEnvironment-egenskapen, vilket möjliggör miljöspecifik logik i host builder-koden.
              Program I filen:
if (builder.HostEnvironment.Environment == "Custom")
{
    ...
};
Följande bekvämlighetsutökningar som tillhandahålls via WebAssemblyHostEnvironmentExtensions tillåter kontroll av den aktuella miljön för Development, Production, Staging och anpassade miljönamn.
              Program I filen:
if (builder.HostEnvironment.IsStaging())
{
    ...
};
if (builder.HostEnvironment.IsEnvironment("Custom"))
{
    ...
};
Egenskapen IWebAssemblyHostEnvironment.BaseAddress kan användas vid start när NavigationManager tjänsten inte är tillgänglig.
Ytterligare resurser
ASP.NET Core