Utilisez les étiquettes pour fournir des valeurs de configuration par environnement.

De nombreuses applications ont besoin de différentes configurations selon les environnements. Supposons qu’une application possède une valeur de configuration qui définit la chaîne de connexion à utiliser pour sa base de données principale. Les développeurs de l’application utilisent une autre base de données que celle utilisée en production. La chaîne de connexion de base de données utilisée par l’application doit changer lorsque l’application passe du développement à la production.

Dans Azure App Configuration, il est possible d’utiliser des étiquettes afin de définir des valeurs différentes pour la même clé. Par exemple, vous pouvez définir une clé unique avec des valeurs différentes pour le développement et la production, et spécifier la ou les étiquettes à charger lors de la connexion à App Configuration.

Pour illustrer cette fonctionnalité, vous allez modifier l’application web créée dans Démarrage rapide : Création d’une application ASP.NET Core avec Azure App Configuration en utilisant des paramètres de configuration différents pour le développement et la production. Suivez le guide de démarrage rapide avant de continuer.

Spécification d’une étiquette lors de l’ajout d’une valeur de configuration

Sur le Portail Azure, accédez à Explorateur de configuration et recherchez la clé TestApp:Settings:FontColor que vous avez créée dans le guide de démarrage rapide. Sélectionnez son menu contextuel, puis sélectionnez Ajouter une valeur.

Add Value menu item

Sur l’écran Ajouter une valeur, entrez Rouge comme Valeur et Développement comme Étiquette. Laissez Type de contenu vide. Sélectionnez Appliquer.

Charger les valeurs de configuration avec une étiquette spécifiée

Par défaut, Azure App Configuration charge uniquement les valeurs de configuration sans étiquette. Si vous avez défini des étiquettes pour vos valeurs de configuration, spécifiez les étiquettes à utiliser lors de la connexion à App Configuration.

Dans la section précédente, vous avez créé une valeur de configuration différente pour l’environnement de développement. Vous utilisez la variable HostingEnvironment.EnvironmentName pour déterminer dynamiquement dans quel environnement d’exécution l’application s’exécute. Pour plus d’informations, consultez Utilisation de plusieurs environnements dans ASP.NET Core.

Ajoutez une référence à l’espace de noms Microsoft.Extensions.Configfiguration.AzureAppConfiguration pour accéder aux classes KeyFilter et LabelFilter.

using Microsoft.Extensions.Configuration.AzureAppConfiguration;

Chargez les valeurs de configuration avec l’étiquette correspondant à l’environnement actuel en passant le nom de l’environnement dans la méthode Select :

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

Important

L’extrait de code précédent utilise l’outil Secret Manager pour charger la chaîne de connexion d’App Configuration. Pour plus d’informations sur le stockage de la chaîne de connexion à l’aide de Secret Manager, consultez Démarrage rapide pour Azure App Configuration avec ASP.NET Core.

La méthode Select est appelée deux fois. La première fois, elle charge les valeurs de configuration sans étiquette. Ensuite, elle les charge à nouveau avec l’étiquette correspondant à l’environnement actuel. Ces valeurs propres à l’environnement remplacent toutes les valeurs correspondantes sans étiquette. Il n’est pas nécessaire de définir des valeurs propres à l’environnement pour chacune des clés. Si une clé ne comporte pas de valeur dotée d’une étiquette correspondant à l’environnement actuel, elle utilise la valeur sans étiquette.

Test dans des environnements différents

Ouvrez le fichier launchSettings.json qui se trouve dans le répertoire Properties. Recherchez l’entrée config sous profiles. Dans la section environmentVariables, définissez la variable ASPNETCORE_ENVIRONMENT sur Production.

Une fois les nouvelles valeurs définies, générez et exécutez votre application.

dotnet build
dotnet run

Utilisez un navigateur web pour accéder à http://localhost:5000. Vous remarquerez que la police est de couleur noire.

Web application running with production configuration

Mettez à jour launchSettings.json pour définir la variable ASPNETCORE_ENVIRONMENT sur Development. Exécutez de nouveau dotnet run.

Vous remarquerez que la police est maintenant de couleur rouge. En effet, l’application utilise désormais la valeur de TestApp:Settings:FontColor comportant l’étiquette Development. Toutes les autres valeurs de configuration restent les mêmes que leurs valeurs de production.

Web application running with development configuration

Étapes suivantes