asp.net-core
Konfiguration
Sök…
Introduktion
Asp.net-kärnan ger konfigurationsabstraktioner. De låter dig ladda konfigurationsinställningar från olika källor och bygga en slutlig konfigurationsmodell som sedan kan konsumeras av din applikation.
Syntax
-
IConfiguration
-
string this[string key] { get; set; }
-
IEnumerable<IConfigurationSection> GetChildren();
-
IConfigurationSection GetSection(string key);
Få åtkomst till konfiguration med beroende injektion
Det rekommenderade tillvägagångssättet skulle vara att undvika att göra det och snarare använda IOptions<TOptions>
och IServiceCollection.Configure<TOptions>
.
Som sagt, detta är fortfarande ganska enkelt att göra IConfigurationRoot
tillgänglig applikation bred.
I Startup.cs-konstruktören bör du ha följande kod för att bygga konfigurationen,
Configuration = builder.Build();
Här är Configuration
en instans av IConfigurationRoot
, och lägg till den här instansen som en Singleton till tjänstesamlingen i metoden ConfigureServices, Startup.cs,
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IConfigurationRoot>(provider => Configuration);
Till exempel kan du nu komma åt konfigurationen i en Controller / Service
public MyController(IConfigurationRoot config){
var setting1= config.GetValue<string>("Setting1")
}
Komma igång
I det här exemplet kommer vi att beskriva vad som händer när du ställer in ett nytt projekt.
Först läggs följande beroenden till project.json
projekt (för närvarande project.json
fil):
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
Det kommer också att skapa en konstruktör i din Startup.cs
fil som kommer att ansvara för att bygga konfigurationen med hjälp av ConfigurationBuilder
flytande api:
- Den skapar först en ny
ConfigurationBuilder
. - Den sätter sedan en basväg som kommer att användas för att beräkna absolut sökväg för ytterligare filer
- Det lägger till valfri
appsettings.json
till konfigurationsbyggaren och övervakar dess förändringar - Den lägger till en valfri miljörelaterad konfigurationsfil för
appsettings.environementName.json
- Därefter läggs till miljövariabler.
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(); }
Om samma inställning ställs in i flera källor vinner den senaste källan som lagts till och dess värde väljs.
Konfiguration kan sedan konsumeras med indexeregenskapen. Kolon :
karaktär tjänar en vägavgränsare.
Configuration["AzureLogger:ConnectionString"]
Detta kommer att leta efter ett konfigurationsvärde ConnectionString
i ett AzureLogger
avsnitt.
Arbeta med miljövariabler
Du kan källa till konfiguration från miljövariabler genom att ringa .AddEnvironmentVariables()
på din ConfigurationBuilder
.
Den kommer att ladda miljövariabler förinställd med APPSETTING_
Den kommer sedan att använda kolon :
som nyckelvägsavskiljare.
Detta betyder att följande miljöinställningar:
APPSETTING_Security:Authentication:UserName = a_user_name
APPSETTING_Security:Authentication:Password = a_user_password
Kommer att motsvara denna json:
{
"Security" : {
"Authentication" : {
"UserName" : "a_user_name",
"Password" : "a_user_password"
}
}
}
** Observera att Azure Service överför inställningar som miljövariabler. Prefix ställs in för dig på ett öppet sätt. Så för att göra detsamma i Azure ställer du bara in två applikationsinställningar i AppSettings blad:
Security:Authentication:UserName a_user_name
Security:Authentication:Password a_user_password
Alternativmodell och konfiguration
När du hanterar stora konfigurationsuppsättningar av värde, kan det bli ganska obekvämt att ladda dem en köp en.
Alternativmodell som kommer med asp.net erbjuder ett bekvämt sätt att kartlägga ett section
till en dotnet- poco
: Till exempel kan man StorageOptions
direkt från ett konfigurationsavsnitt b lägga till Microsoft.Extensions.Options.ConfigurationExtensions
paketet och ringa Configure<TOptions>(IConfiguration config)
förlängningsmetod.
services.Configure<StorageOptions>(Configuration.GetSection("Storage"));
I minneskonfigureringskälla
Du kan också källa till konfiguration från ett i minnesobjekt som en Dictionary<string,string>
.AddInMemoryCollection(new Dictionary<string, string>
{
["akey"] = "a value"
})
Detta kan avslöja användbara i scenarier för integration / enhetstest.