Configuration des applications C# (.NET) : Guide complet de la bibliothèque Microsoft.Extensions.Configuration
Les applications modernes en C# et .NET nécessitent une gestion flexible des paramètres : chaînes de connexion à la base de données, URL des services externes, paramètres de journalisation, etc. La bibliothèque Microsoft.Extensions.Configuration fournit un mécanisme puissant et unifié pour travailler avec la configuration. Elle prend en charge de multiples sources de données (JSON, XML, variables d'environnement, arguments de ligne de commande) et permet de les combiner dans une seule hiérarchie.
Fonctionnalités principales de la bibliothèque
- Fusion multi-niveaux — les paramètres provenant de différentes sources sont fusionnés en un seul objet.
- Priorité des sources — la dernière source ajoutée remplace les précédentes.
- Liaison aux classes (Options pattern) — remplissage automatique des objets POCO à partir de la configuration.
- Mise à jour dynamique — prise en charge de la relecture des fichiers sans redémarrer l'application.
- Sécurité — les données sensibles peuvent être placées dans des variables d'environnement ou Azure Key Vault.
Utilisation de base : lecture à partir de appsettings.json
Créez un fichier appsettings.json à la racine du projet :
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning" } }, "ConnectionStrings": { "DefaultConnection": "Server=localhost;Database=mydb;User Id=sa;Password=***;" }, "AppSettings": { "AppName": "MyApp", "MaxRetries": 3, "FeatureFlags": { "EnableNewUI": true, "EnableAnalytics": false } }}Chargez la configuration dans le code :
using Microsoft.Extensions.Configuration;
var configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .Build();
// Lecture de valeurs simplesstring appName = configuration["AppSettings:AppName"];int maxRetries = int.Parse(configuration["AppSettings:MaxRetries"]);
// Lecture de sections imbriquéesvar loggingSection = configuration.GetSection("Logging:LogLevel");string defaultLevel = loggingSection["Default"];
// Lecture d'une chaîne de connexionstring connString = configuration.GetConnectionString("DefaultConnection");
Console.WriteLine($"Application : {appName}, Tentatives : {maxRetries}");Priorité et fusion des sources
Vous pouvez combiner plusieurs sources. Par exemple, chargez d'abord le JSON, puis remplacez certains paramètres via des variables d'environnement :
var config = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) // pour Development/Production .AddEnvironmentVariables() // les variables d'environnement ont une priorité plus élevée .AddCommandLine(args) // les arguments de ligne de commande ont la priorité la plus élevée .Build();Liaison à des classes fortement typées (Options Pattern)
Créez une classe pour la section de configuration :
public class AppSettings{ public string AppName { get; set; } public int MaxRetries { get; set; } public FeatureFlags FeatureFlags { get; set; }}
public class FeatureFlags{ public bool EnableNewUI { get; set; } public bool EnableAnalytics { get; set; }}Ensuite, liez-la dans Program.cs à l'aide du conteneur DI :
// Enregistrement des servicesbuilder.Services.Configure<AppSettings>( builder.Configuration.GetSection("AppSettings"));
// Utilisation dans une classe (par exemple, dans un contrôleur)public class HomeController : Controller{ private readonly AppSettings _settings; public HomeController(IOpti Aussi dans la bibliothèque
Autorisation et authentification en Go : packages et exemples pratiques
Mise en cache en PHP : Redis, Memcached et solutions intégrées
Migrations de bases de données dans Node.js : Aperçu des outils et exemples
Twig pour PHP : guide complet avec exemples
Surveillance des applications Go (Golang) : bibliothèques et outils