Dela via


Använd etiketter för att ange konfigurationsvärden per miljö.

Många program behöver använda olika konfigurationer för olika miljöer. Anta att ett program har ett konfigurationsvärde som definierar slutpunkten för dess back-end databas. Programutvecklarna använder en annan databas än den som används i produktion. Databasslutpunkten som programmet använder måste ändras när programmet flyttas från utveckling till produktion.

I Azure App Configuration kan du använda etiketter för att definiera olika värden för samma nyckel. Du kan till exempel definiera en enskild nyckel med olika värden för utveckling och produktion. Du kan ange vilken etikett som ska laddas in när du ansluter till App Configuration.

För att demonstrera den här funktionen ändrar du webbappen som skapades i Snabbstart: Skapa en ASP.NET Core-app med Azure App Configuration för att använda olika konfigurationsinställningar för utveckling jämfört med produktion. Slutför snabbstarten innan du fortsätter.

Ange en etikett när du lägger till ett konfigurationsvärde

I Azure-portalen går du till Configuration Explorer och hittar nyckeln TestApp:Settings:FontColor som du skapade i snabbstarten. Välj snabbmenyn och välj sedan Lägg till värde.

Menyalternativet Lägg till värde

På skärmen Lägg till värde anger du ett värde med rött värde och en etikett förutveckling. Lämna innehållstypen tom. Välj Använd.

Ladda konfigurationsvärden med en angiven etikett

Som standard läser Azure App Configuration bara in konfigurationsvärden utan etikett. Om du har definierat etiketter för dina konfigurationsvärden vill du ange de etiketter som ska användas när du ansluter till App Configuration.

I föregående avsnitt skapade du ett annat konfigurationsvärde för utvecklingsmiljön. Du använder variabeln HostingEnvironment.EnvironmentName för att dynamiskt avgöra vilken miljö appen körs i. Mer information finns i Använda flera miljöer i ASP.NET Core.

Lägg till en referens till namnområdet Microsoft.Extensions.Configuration.AzureAppConfiguration för att få åtkomst till klasserna KeyFilter och LabelFilter .

using Microsoft.Extensions.Configuration.AzureAppConfiguration;

Läs in konfigurationsvärden med etiketten som motsvarar den aktuella miljön genom att skicka miljönamnet till Select metoden:

var builder = WebApplication.CreateBuilder(args);

builder.Configuration.AddAzureAppConfiguration(options =>
    {
        string endpoint = Environment.GetEnvironmentVariable("Endpoint");
        options.Connect(new Uri(endpoint), new DefaultAzureCredential())
               // Load configuration values with no label
               .Select(KeyFilter.Any, LabelFilter.Null)
               // Override with any configuration values specific to current hosting env
               .Select(KeyFilter.Any, builder.Environment.EnvironmentName);
    });

Metoden Select anropas två gånger. Första gången läser den in konfigurationsvärden utan etikett. Sedan läser den in konfigurationsvärden med etiketten som motsvarar den aktuella miljön. Dessa miljöspecifika värden åsidosätter motsvarande värden utan etikett. Du behöver inte definiera miljöspecifika värden för varje nyckel. Om en nyckel inte har ett värde med en etikett som motsvarar den aktuella miljön använder den värdet utan etikett.

Testa i olika miljöer

launchSettings.json Öppna filen under Properties katalogen. Hitta posten config under profiles. I avsnittet environmentVariables anger du variabeln ASPNETCORE_ENVIRONMENT till Production.

Med de nya värdena angivna skapar och kör du ditt program.

dotnet build
dotnet run

Använd en webbläsare för att gå till http://localhost:5000. Du kommer att märka att teckenfärgen är svart.

Webbprogram som körs med produktionskonfiguration

Uppdatera launchSettings.json för att ange variabeln ASPNETCORE_ENVIRONMENT till Development. Kör dotnet run igen.

Du kommer att märka att teckenfärgen nu är röd. Detta beror på att programmet nu använder värdet av TestApp:Settings:FontColor som har etiketten Development. Alla andra konfigurationsvärden förblir desamma som deras produktionsvärden.

Webbprogram som körs med utvecklingskonfiguration

Nästa steg