Suche…


Einführung

Der Asp.net-Kern bietet Konfigurationsabstraktionen. Mit ihnen können Sie Konfigurationseinstellungen aus verschiedenen Quellen laden und ein endgültiges Konfigurationsmodell erstellen, das dann von Ihrer Anwendung verwendet werden kann.

Syntax

  • IConfiguration
  • string this[string key] { get; set; }
  • IEnumerable<IConfigurationSection> GetChildren();
  • IConfigurationSection GetSection(string key);

Zugriff auf die Konfiguration mithilfe der Abhängigkeitseinspritzung

Der empfohlene Ansatz wäre, dies zu vermeiden und stattdessen IOptions<TOptions> und IServiceCollection.Configure<TOptions> .

Das heißt, es ist immer noch ziemlich einfach, IConfigurationRoot für die IConfigurationRoot Anwendung verfügbar zu machen.

Im Startup.cs-Konstruktor sollte der folgende Code zum Erstellen der Konfiguration vorhanden sein:

 Configuration = builder.Build();

Hier ist Configuration eine Instanz von IConfigurationRoot Sie diese Instanz als Singleton der Servicesammlung in der ConfigureServices-Methode Startup.cs hinzu.

 public void ConfigureServices(IServiceCollection services)
 {
    services.AddSingleton<IConfigurationRoot>(provider => Configuration);

Zum Beispiel können Sie jetzt auf die Konfiguration in einem Controller / Dienst zugreifen

  public MyController(IConfigurationRoot config){
      var setting1= config.GetValue<string>("Setting1")
  }

Fertig machen

In diesem Beispiel beschreiben wir, was passiert, wenn Sie ein neues Projekt erstellen.

Als erstes werden die folgenden Abhängigkeiten zu project.json Projekt hinzugefügt (derzeit project.json Datei):

"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",

Außerdem wird in Ihrer Datei " Startup.cs ein Konstruktor erstellt, der für die Erstellung der Konfiguration mithilfe von ConfigurationBuilder fließend api verantwortlich ist:

  1. Zuerst wird ein neuer ConfigurationBuilder .
  2. Dann wird ein Basispfad festgelegt, der zur Berechnung des absoluten Pfads weiterer Dateien verwendet wird
  3. Es fügt dem Konfigurations-Builder eine optionale appsettings.json hinzu und überwacht deren Änderungen
  4. Es fügt eine optionale, appsettings.environementName.json Konfigurationsdatei appsettings.environementName.json hinzu
  5. Dann werden Umgebungsvariablen hinzugefügt.
public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
        .AddEnvironmentVariables();

    Configuration = builder.Build();
}

Wenn in mehreren Quellen dieselbe Einstellung festgelegt ist, gewinnt die zuletzt hinzugefügte Quelle und ihr Wert wird ausgewählt.

Die Konfiguration kann dann mit der Indexer-Eigenschaft verwendet werden. Der Doppelpunkt : Zeichen dienen als Trennzeichen.

Configuration["AzureLogger:ConnectionString"]

Dadurch wird nach einem Konfigurationswert ConnectionString in einem AzureLogger Abschnitt AzureLogger .

Arbeit mit Umgebungsvariablen

Sie können die Konfiguration aus Umgebungsvariablen .AddEnvironmentVariables() indem Sie .AddEnvironmentVariables() in .AddEnvironmentVariables() ConfigurationBuilder aufrufen.

Es wird Umgebungsvariablen geladen werden mit dem Präfix APPSETTING_ Es wird dann Doppelpunkt verwenden : als Schlüssel Pfadseparator.

Das bedeutet: folgende Umgebungseinstellungen:

APPSETTING_Security:Authentication:UserName = a_user_name
APPSETTING_Security:Authentication:Password = a_user_password

Wird das Äquivalent dieses Json sein:

{
    "Security" : {
       "Authentication" : {
           "UserName" : "a_user_name",
           "Password" : "a_user_password" 
        } 
    }
}

** Beachten Sie, dass der Azure-Dienst Einstellungen als Umgebungsvariablen überträgt. Das Präfix wird für Sie transparent eingestellt. Um dasselbe in Azure zu tun, legen Sie einfach zwei Anwendungseinstellungen im AppSettings-Blatt fest:

Security:Authentication:UserName         a_user_name
Security:Authentication:Password         a_user_password

Optionsmodell und Konfiguration

Wenn Sie mit großen Konfigurationssätzen arbeiten, kann es ziemlich unhandlich werden, sie zu kaufen.

Das mit asp.net gelieferte Optionsmodell bietet eine bequeme Möglichkeit, einen section einem Dotnet- poco zuzuordnen: Zum Beispiel könnten Sie StorageOptions direkt aus einem Konfigurationsabschnitt hydratisieren, indem Sie das Paket Microsoft.Extensions.Options.ConfigurationExtensions hinzufügen und das Configure<TOptions>(IConfiguration config) Erweiterungsmethode Configure<TOptions>(IConfiguration config) .

services.Configure<StorageOptions>(Configuration.GetSection("Storage"));

In Speicherkonfigurationsquelle

Sie können die Konfiguration auch aus einem In-Memory-Objekt wie einem Dictionary<string,string>

.AddInMemoryCollection(new Dictionary<string, string>
{
    ["akey"] = "a value"
})

Dies kann bei Integrations- / Komponententestszenarien hilfreich sein.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow