Ricerca…


introduzione

Asp.net core fornisce astrazioni di configurazione. Permettono di caricare le impostazioni di configurazione da varie fonti e creare un modello di configurazione finale che può essere quindi utilizzato dall'applicazione.

Sintassi

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

Accesso alla configurazione mediante Iniezione delle dipendenze

L'approccio consigliato sarebbe evitare di farlo e piuttosto utilizzare IOptions<TOptions> e IServiceCollection.Configure<TOptions> .

Detto questo, è ancora abbastanza semplice rendere IConfigurationRoot disponibile per IConfigurationRoot le applicazioni.

Nel costruttore Startup.cs dovresti avere il seguente codice per costruire la configurazione,

 Configuration = builder.Build();

Qui Configuration è un'istanza di IConfigurationRoot , e aggiungi questa istanza come Singleton alla raccolta di servizi nel metodo ConfigureServices, Startup.cs,

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

Ad esempio, ora è possibile accedere alla configurazione in un controller / servizio

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

Iniziare

In questo esempio descriveremo cosa succede quando impalcature un nuovo progetto.

Per prima cosa, verranno aggiunte le seguenti dipendenze al progetto (attualmente project.json file):

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

Creerà anche un costruttore nel file Startup.cs che sarà responsabile della creazione della configurazione utilizzando l'API fluente di ConfigurationBuilder :

  1. Prima crea un nuovo ConfigurationBuilder .
  2. Quindi imposta un percorso di base che verrà utilizzato per calcolare il percorso assoluto di ulteriori file
  3. Aggiunge un appsettings.json opzionale.json al builder di configurazione e monitora le sue modifiche
  4. Aggiunge un file di configurazione appsettings.environementName.json relativo all'ambiente opzionale
  5. Quindi aggiunge le variabili di ambiente.
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();
}

Se una stessa impostazione è impostata su più fonti, l'ultima sorgente aggiunta vincerà e il suo valore sarà selezionato.

La configurazione può quindi essere utilizzata utilizzando la proprietà dell'indicizzatore. I due punti : carattere serve un delimitatore di percorso.

Configuration["AzureLogger:ConnectionString"]

Questo cercherà un valore di configurazione ConnectionString in una sezione di AzureLogger .

Lavora con le variabili d'ambiente

È possibile creare la configurazione di origine dalle variabili di ambiente chiamando .AddEnvironmentVariables() su ConfigurationBuilder .

Caricherà le variabili di ambiente prefissate con APPSETTING_ Quindi userà due punti : come separatore del percorso chiave.

Ciò significa che: seguendo le impostazioni dell'ambiente:

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

Sarà l'equivalente di questo json:

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

** Si noti che il servizio di Azure trasmetterà le impostazioni come variabili di ambiente. Il prefisso verrà impostato per te in modo trasparente. Quindi per fare lo stesso in Azure è sufficiente impostare due Impostazioni applicazione nel pannello AppSettings:

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

Modello di opzione e configurazione

Quando si ha a che fare con grandi insiemi di valori di configurazione, potrebbe essere piuttosto difficile caricarli uno per uno.

Opzione modello che viene fornito con asp.net offre un modo conveniente per mappare una section ad un dotnet poco : per esempio, si potrebbe idratare StorageOptions direttamente da una sezione di configurazione b aggiungendo Microsoft.Extensions.Options.ConfigurationExtensions pacchetto e chiamando il Configure<TOptions>(IConfiguration config) metodo di estensione.

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

Nella fonte di configurazione della memoria

È anche possibile creare la configurazione da un oggetto in memoria come un Dictionary<string,string>

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

Questo può rivelarsi utile in scenari di test di integrazione / unità.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow