Konfiguration von C#-Anwendungen (.NET): Bibliotheken und Ansätze

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Konfiguration von C#-Anwendungen (.NET): Vollständiger Leitfaden zur Bibliothek Microsoft.Extensions.Configuration



Moderne Anwendungen in C# und .NET erfordern eine flexible Verwaltung von Einstellungen: Datenbank-Verbindungszeichenfolgen, URLs externer Dienste, Protokollierungsparameter usw. Die Bibliothek Microsoft.Extensions.Configuration bietet einen leistungsstarken und einheitlichen Mechanismus für die Arbeit mit Konfigurationen. Sie unterstützt zahlreiche Datenquellen (JSON, XML, Umgebungsvariablen, Befehlszeilenargumente) und ermöglicht deren Kombination in einer einzigen Hierarchie.



Hauptfunktionen der Bibliothek

  • Mehrstufige Zusammenführung — Einstellungen aus verschiedenen Quellen werden zu einem einzigen Objekt zusammengeführt.
  • Quellenpriorität — Die zuletzt hinzugefügte Quelle überschreibt die vorherigen.
  • Bindung an Klassen (Options pattern) — Automatisches Befüllen von POCO-Objekten aus der Konfiguration.
  • Dynamische Aktualisierung — Unterstützung des erneuten Einlesens von Dateien ohne Neustart der Anwendung.
  • Sicherheit — Sensible Daten können in Umgebungsvariablen oder Azure Key Vault ausgelagert werden.


Grundlegende Verwendung: Lesen aus appsettings.json

Erstellen Sie eine Datei appsettings.json im Stammverzeichnis des Projekts:

{  "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    }  }}


Laden Sie die Konfiguration im Code:

using Microsoft.Extensions.Configuration;

var configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .Build();

// Lesen einfacher Wertestring appName = configuration["AppSettings:AppName"];int maxRetries = int.Parse(configuration["AppSettings:MaxRetries"]);

// Lesen verschachtelter Abschnittevar loggingSection = configuration.GetSection("Logging:LogLevel");string defaultLevel = loggingSection["Default"];

// Lesen einer Verbindungszeichenfolgestring connString = configuration.GetConnectionString("DefaultConnection");

Console.WriteLine($"Anwendung: {appName}, Wiederholungen: {maxRetries}");


Priorität und Zusammenführung von Quellen

Sie können mehrere Quellen kombinieren. Laden Sie beispielsweise zuerst JSON und überschreiben Sie dann einzelne Parameter über Umgebungsvariablen:

var config = new ConfigurationBuilder()    .AddJsonFile("appsettings.json")    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) // für Development/Production    .AddEnvironmentVariables() // Umgebungsvariablen haben höhere Priorität    .AddCommandLine(args)      // Befehlszeilenargumente haben die höchste Priorität    .Build();


Bindung an streng typisierte Klassen (Options Pattern)

Erstellen Sie eine Klasse für den Konfigurationsabschnitt:

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


Binden Sie diese dann in Program.cs mit dem DI-Container:

// Registrierung der Dienstebuilder.Services.Configure<AppSettings>(    builder.Configuration.GetSection("AppSettings"));

// Verwendung in einer Klasse (z.B. in einem Controller)public class HomeController : Controller{ private readonly AppSettings _settings; public HomeController(IOpti

Empfehlungen