Share 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 anslutningssträng som ska användas för serverdelsdatabasen. Programutvecklarna använder en annan databas än den som används i produktion. Databasen anslutningssträng 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 läsas 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:Inställningar:FontColor som du skapade i snabbstarten. Välj snabbmenyn och välj sedan Lägg till värde.

Add Value menu item

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.

Läsa in 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 =>
    {
            options.Connect(builder.Configuration.GetConnectionString("AppConfig"))
                // 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);
    });

Viktigt!

Det föregående kodfragmentet använder Secret Manager-verktyget för att läsa in appkonfiguration anslutningssträng. Information om hur du lagrar anslutningssträng med secret manager finns i Snabbstart för Azure App Configuration med ASP.NET Core.

Metoden Select anropas två gånger. Första gången läser den in konfigurationsvärden utan etikett. Sedan läses konfigurationsvärden in 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.

Web application running with production configuration

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. Det beror på att programmet nu använder värdet TestApp:Settings:FontColor för som har Development etiketten. Alla andra konfigurationsvärden förblir desamma som deras produktionsvärden.

Web application running with development configuration

Nästa steg