Gebruik labels om configuratiewaarden per omgeving op te geven.

Veel toepassingen moeten verschillende configuraties gebruiken voor verschillende omgevingen. Stel dat een toepassing een configuratiewaarde heeft die de verbindingsreeks definieert die moet worden gebruikt voor de back-enddatabase. De toepassingsontwikkelaars gebruiken een andere database dan de database die in productie wordt gebruikt. De database verbindingsreeks die door de toepassing wordt gebruikt, moet worden gewijzigd wanneer de toepassing van ontwikkeling naar productie overgaat.

In Azure-app Configuratie kunt u labels gebruiken om verschillende waarden voor dezelfde sleutel te definiëren. U kunt bijvoorbeeld één sleutel definiëren met verschillende waarden voor ontwikkeling en productie. U kunt opgeven welk label moet worden geladen wanneer u verbinding maakt met App Configuration.

Als u deze functionaliteit wilt demonstreren, wijzigt u de web-app die is gemaakt in quickstart: Een ASP.NET Core-app maken met Azure-app Configuration om verschillende configuratie-instellingen te gebruiken voor ontwikkeling versus productie. Voltooi de quickstart voordat u doorgaat.

Een label opgeven bij het toevoegen van een configuratiewaarde

Ga in Azure Portal naar Configuration Explorer en zoek de toets TestApp:Instellingen:FontColor die u in de quickstart hebt gemaakt. Selecteer het contextmenu en selecteer Vervolgens Waarde toevoegen.

Add Value menu item

Voer in het scherm Waarde toevoegen een waarde van rood en een label van ontwikkeling in. Laat het inhoudstype leeg. Selecteer Toepassen.

Configuratiewaarden laden met een opgegeven label

Standaard laadt Azure-app Configuration alleen configuratiewaarden zonder label. Als u labels voor uw configuratiewaarden hebt gedefinieerd, moet u de labels opgeven die moeten worden gebruikt bij het maken van verbinding met App Configuration.

In de vorige sectie hebt u een andere configuratiewaarde voor de ontwikkelomgeving gemaakt. U gebruikt de HostingEnvironment.EnvironmentName variabele om dynamisch te bepalen in welke omgeving de app momenteel wordt uitgevoerd. Zie Meerdere omgevingen gebruiken in ASP.NET Core voor meer informatie.

Voeg een verwijzing toe naar de naamruimte Microsoft.Extensions.Configuration.AzureAppConfiguration om toegang te krijgen tot de klassen KeyFilter en LabelFilter .

using Microsoft.Extensions.Configuration.AzureAppConfiguration;

Laad configuratiewaarden met het label dat overeenkomt met de huidige omgeving door de omgevingsnaam door te geven aan de Select methode:

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);
    });

Belangrijk

In het voorgaande codefragment wordt het hulpprogramma Secret Manager gebruikt om App Configuration verbindingsreeks te laden. Zie quickstart voor Azure-app configuratie met ASP.NET Core voor informatie over het opslaan van de verbindingsreeks met Secret Manager.

De Select methode wordt twee keer aangeroepen. De eerste keer worden configuratiewaarden zonder label geladen. Vervolgens worden configuratiewaarden geladen met het label dat overeenkomt met de huidige omgeving. Deze omgevingsspecifieke waarden overschrijven alle bijbehorende waarden zonder label. U hoeft geen omgevingsspecifieke waarden voor elke sleutel te definiëren. Als een sleutel geen waarde heeft met een label dat overeenkomt met de huidige omgeving, wordt de waarde zonder label gebruikt.

Testen in verschillende omgevingen

Open het launchSettings.json bestand onder de Properties map. Zoek de config vermelding onder profiles. Stel in de environmentVariables sectie de ASPNETCORE_ENVIRONMENT variabele in op Production.

Bouw en voer uw toepassing uit met de nieuwe waardenset.

dotnet build
dotnet run

Gebruik een webbrowser om naar http://localhost:5000. U ziet dat de tekstkleur zwart is.

Web application running with production configuration

Bijwerken launchSettings.json om de ASPNETCORE_ENVIRONMENT variabele in te stellen op Development. Voer dotnet run opnieuw uit.

U ziet dat de tekstkleur nu rood is. Dit komt doordat de toepassing nu gebruikmaakt van de waarde die TestApp:Settings:FontColor het Development label heeft. Alle andere configuratiewaarden blijven hetzelfde als hun productiewaarden.

Web application running with development configuration

Volgende stappen