Webframeworkk/ASP.NET Core/Konfiguration: Unterschied zwischen den Versionen

Aus Dokument
Zur Navigation springen Zur Suche springen
imported>Import
Version 191
 
Die Seite wurde neu angelegt: „ Dieses Tutorial bietet einen umfassenden Einstieg in das Konfigurationssystem von ASP.NET Core. Es richtet sich an Entwickler, die lernen möchten, wie man Einstellungen und sensible Daten sicher und flexibel verwaltet. == 1. Grundlagen der Konfiguration == * '''Konfigurationsquellen:''' JSON-Dateien, Umgebungsvariablen, Kommandozeilenargumente, In-Memory-Objekte, Azure Key Vault, Azure App Configuration, User Secrets. * '''Key-Value-Prinzip:''' Einstel…“
 
Zeile 1: Zeile 1:
''Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).''
''Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).''
----
----


Dieses Tutorial bietet einen umfassenden Einstieg in das Konfigurationssystem von ASP.NET Core. Es richtet sich an Entwickler, die lernen möchten, wie man Einstellungen und sensible Daten sicher und flexibel verwaltet.
Dieses Tutorial bietet einen umfassenden Einstieg in das Konfigurationssystem von ASP.NET Core. Es richtet sich an Entwickler, die lernen möchten, wie man Einstellungen und sensible Daten sicher und flexibel verwaltet.


== 1. Grundlagen der Konfiguration ==
== 1. Grundlagen der Konfiguration ==
* '''Konfigurationsquellen:''' JSON-Dateien, Umgebungsvariablen, Kommandozeilenargumente, In-Memory-Objekte, Azure Key Vault, Azure App Configuration, User Secrets.
* '''Konfigurationsquellen:''' JSON-Dateien, Umgebungsvariablen, Kommandozeilenargumente, In-Memory-Objekte, Azure Key Vault, Azure App Configuration, User Secrets.
* '''Key-Value-Prinzip:''' Einstellungen werden als Schlüssel-Wert-Paare gespeichert.
* '''Key-Value-Prinzip:''' Einstellungen werden als Schlüssel-Wert-Paare gespeichert.


== 2. Typische Konfigurationsquellen ==
== 2. Typische Konfigurationsquellen ==
* '''appsettings.json:''' Standardkonfiguration, nicht-sensible Daten.
* '''appsettings.json:''' Standardkonfiguration, nicht-sensible Daten.
* '''appsettings.{Environment}.json:''' Umgebungsabhängige Überschreibungen.
* '''appsettings.{Environment}.json:''' Umgebungsabhängige Überschreibungen.
Zeile 18: Zeile 17:


== 3. Hinzufügen von Konfigurationsquellen ==
== 3. Hinzufügen von Konfigurationsquellen ==
Im <code>Program.cs</code> werden Quellen in der gewünschten Reihenfolge hinzugefügt (letzte gewinnt):
Im <code>Program.cs</code> werden Quellen in der gewünschten Reihenfolge hinzugefügt (letzte gewinnt):
 
<syntaxhighlight lang="csharp">
<syntaxhighlight lang="csharp">configuration.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
configuration.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
configuration.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
configuration.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
configuration.AddEnvironmentVariables();
configuration.AddEnvironmentVariables();
configuration.AddUserSecrets&lt;Program&gt;();</syntaxhighlight>
configuration.AddUserSecrets&lt;Program&gt;();
</syntaxhighlight>
 
== 4. Zugriff auf Konfiguration ==
== 4. Zugriff auf Konfiguration ==
* '''IConfiguration:''' Zentrale Schnittstelle, Zugriff auf Werte per Indexer oder Methoden wie <code>GetSection</code>, <code>GetValue&lt;T&gt;</code>, <code>GetConnectionString</code>.
* '''IConfiguration:''' Zentrale Schnittstelle, Zugriff auf Werte per Indexer oder Methoden wie <code>GetSection</code>, <code>GetValue&lt;T&gt;</code>, <code>GetConnectionString</code>.
* '''Dependency Injection:''' <code>IConfiguration</code> wird in Controller/Services per Konstruktor injiziert.
* '''Dependency Injection:''' <code>IConfiguration</code> wird in Controller/Services per Konstruktor injiziert.
Zeile 32: Zeile 31:


== 5. Hierarchische Konfiguration ==
== 5. Hierarchische Konfiguration ==
* JSON-Struktur erlaubt Abschnitte und verschachtelte Werte.
* JSON-Struktur erlaubt Abschnitte und verschachtelte Werte.
* Zugriff mit Doppelpunkten, z.B. <code>Logging:LogLevel:Default</code>.
* Zugriff mit Doppelpunkten, z.B. <code>Logging:LogLevel:Default</code>.
Zeile 38: Zeile 36:


== 6. Best Practices ==
== 6. Best Practices ==
* '''Layered Configuration:''' Mehrere Quellen mit klarer Priorität.
* '''Layered Configuration:''' Mehrere Quellen mit klarer Priorität.
* '''Trennung sensibler Daten:''' Secrets nie in Code/Repo, sondern in Key Vault/User Secrets.
* '''Trennung sensibler Daten:''' Secrets nie in Code/Repo, sondern in Key Vault/User Secrets.
Zeile 45: Zeile 42:


== 7. Beispiel: Options Pattern ==
== 7. Beispiel: Options Pattern ==
 
<syntaxhighlight lang="csharp">
<syntaxhighlight lang="csharp">public class MyOptions { public string Option1 { get; set; } public int Option2 { get; set; } }
public class MyOptions { public string Option1 { get; set; } public int Option2 { get; set; } }
builder.Services.Configure<MyOptions>(builder.Configuration.GetSection("MyOptions"));
builder.Services.Configure<MyOptions>(builder.Configuration.GetSection("MyOptions"));
public class MyService {
public class MyService {
Zeile 52: Zeile 49:
   public MyService(IOptions<MyOptions> options) { _options = options; }
   public MyService(IOptions<MyOptions> options) { _options = options; }
   public void DoSomething() { var opt = _options.Value.Option1; }
   public void DoSomething() { var opt = _options.Value.Option1; }
}</syntaxhighlight>
}
</syntaxhighlight>
 
== 8. Umgang mit Secrets ==
== 8. Umgang mit Secrets ==
* '''User Secrets:''' Für Entwicklung, per <code>dotnet user-secrets</code> CLI verwalten.
* '''User Secrets:''' Für Entwicklung, per <code>dotnet user-secrets</code> CLI verwalten.
* '''Azure Key Vault:''' Für Produktion, zentrale Verwaltung und Rotation.
* '''Azure Key Vault:''' Für Produktion, zentrale Verwaltung und Rotation.


== 9. Umgebungsvariablen ==
== 9. Umgebungsvariablen ==
* Doppelte Unterstriche (<code>__</code>) für Hierarchie, z.B. <code>ASPNETCORE_Logging__LogLevel__Default</code>.
* Doppelte Unterstriche (<code>__</code>) für Hierarchie, z.B. <code>ASPNETCORE_Logging__LogLevel__Default</code>.
* Überschreiben Werte aus JSON-Dateien.
* Überschreiben Werte aus JSON-Dateien.


== 10. Eigene JSON-Dateien ==
== 10. Eigene JSON-Dateien ==
* Zusätzliche Konfigurationsdateien für Modularität möglich.
* Zusätzliche Konfigurationsdateien für Modularität möglich.
* Einbinden mit <code>AddJsonFile(&quot;customsettings.json&quot;, optional: true)</code>.
* Einbinden mit <code>AddJsonFile("customsettings.json", optional: true)</code>.
 


-----
----


'''Fazit:''' Das ASP.NET Core-Konfigurationssystem ist flexibel, sicher und unterstützt Best Practices für moderne Softwareentwicklung. Durch die Kombination verschiedener Quellen, starke Typisierung und sichere Verwaltung sensibler Daten lassen sich robuste und wartbare Anwendungen erstellen.
'''Fazit:'''
Das ASP.NET Core-Konfigurationssystem ist flexibel, sicher und unterstützt Best Practices für moderne Softwareentwicklung. Durch die Kombination verschiedener Quellen, starke Typisierung und sichere Verwaltung sensibler Daten lassen sich robuste und wartbare Anwendungen erstellen.


----
----
''Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).''
''Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).''

Aktuelle Version vom 18. Februar 2026, 22:12 Uhr

Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).



Dieses Tutorial bietet einen umfassenden Einstieg in das Konfigurationssystem von ASP.NET Core. Es richtet sich an Entwickler, die lernen möchten, wie man Einstellungen und sensible Daten sicher und flexibel verwaltet.

1. Grundlagen der Konfiguration

  • Konfigurationsquellen: JSON-Dateien, Umgebungsvariablen, Kommandozeilenargumente, In-Memory-Objekte, Azure Key Vault, Azure App Configuration, User Secrets.
  • Key-Value-Prinzip: Einstellungen werden als Schlüssel-Wert-Paare gespeichert.

2. Typische Konfigurationsquellen

  • appsettings.json: Standardkonfiguration, nicht-sensible Daten.
  • appsettings.{Environment}.json: Umgebungsabhängige Überschreibungen.
  • Umgebungsvariablen: Für geheime oder umgebungsspezifische Werte.
  • User Secrets: Für lokale Entwicklung, keine Produktion.
  • Azure Key Vault/App Configuration: Für zentrale, sichere Verwaltung und Feature-Flags.

3. Hinzufügen von Konfigurationsquellen

Im Program.cs werden Quellen in der gewünschten Reihenfolge hinzugefügt (letzte gewinnt):

configuration.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
configuration.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
configuration.AddEnvironmentVariables();
configuration.AddUserSecrets&lt;Program&gt;();

4. Zugriff auf Konfiguration

  • IConfiguration: Zentrale Schnittstelle, Zugriff auf Werte per Indexer oder Methoden wie GetSection, GetValue<T>, GetConnectionString.
  • Dependency Injection: IConfiguration wird in Controller/Services per Konstruktor injiziert.
  • Options Pattern: Starke Typisierung durch eigene Options-Klassen und IOptions<T>.

5. Hierarchische Konfiguration

  • JSON-Struktur erlaubt Abschnitte und verschachtelte Werte.
  • Zugriff mit Doppelpunkten, z.B. Logging:LogLevel:Default.
  • Arrays und komplexe Objekte werden unterstützt.

6. Best Practices

  • Layered Configuration: Mehrere Quellen mit klarer Priorität.
  • Trennung sensibler Daten: Secrets nie in Code/Repo, sondern in Key Vault/User Secrets.
  • Validierung: Konfiguration beim Start prüfen.
  • ReloadOnChange: Automatisches Neuladen bei Dateiänderung.

7. Beispiel: Options Pattern

public class MyOptions { public string Option1 { get; set; } public int Option2 { get; set; } }
builder.Services.Configure<MyOptions>(builder.Configuration.GetSection("MyOptions"));
public class MyService {
  private readonly IOptions<MyOptions> _options;
  public MyService(IOptions<MyOptions> options) { _options = options; }
  public void DoSomething() { var opt = _options.Value.Option1; }
}

8. Umgang mit Secrets

  • User Secrets: Für Entwicklung, per dotnet user-secrets CLI verwalten.
  • Azure Key Vault: Für Produktion, zentrale Verwaltung und Rotation.

9. Umgebungsvariablen

  • Doppelte Unterstriche (__) für Hierarchie, z.B. ASPNETCORE_Logging__LogLevel__Default.
  • Überschreiben Werte aus JSON-Dateien.

10. Eigene JSON-Dateien

  • Zusätzliche Konfigurationsdateien für Modularität möglich.
  • Einbinden mit AddJsonFile("customsettings.json", optional: true).

Fazit: Das ASP.NET Core-Konfigurationssystem ist flexibel, sicher und unterstützt Best Practices für moderne Softwareentwicklung. Durch die Kombination verschiedener Quellen, starke Typisierung und sichere Verwaltung sensibler Daten lassen sich robuste und wartbare Anwendungen erstellen.


Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).