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.
På skärmen Lägg till värde anger du ett värde med rött värde och en etikett för utveckling. 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.
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.