2017-05-15 2 views
5

ich eine Datei appsettings.json haben, die wie folgt aussieht:ASP.NET Kern: JSON-Konfiguration GetSection null zurück

{ 
    "MyConfig": { 
     "ConfigA": "value", 
     "ConfigB": "value" 
    } 
} 

In meinem Startup.cs Ich baue meine IConfiguration:

public ConfigurationRoot Configuration { get; set; } 

public Startup(ILoggerFactory loggerFactory, IHostingEnvironment environment) 
{ 
     var builder = new ConfigurationBuilder() 
        .SetBasePath(environment.ContentRootPath) 
        .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)        
        .AddEnvironmentVariables(); 

     Configuration = builder.Build(); 
} 

public void ConfigureServices(IServiceCollection services) 
{ 
     //GetSection returns null... 
     services.Configure<MyConfig>(Configuration.GetSection("MyConfig")); 
} 

Aber Configuration.GetSection("MyConfig") immer gibt null zurück, obwohl der Wert in meiner JSON-Datei existiert. Configuration.GetSection("MyConfig:ConfigA") funktioniert gut.

Was mache ich falsch?

+2

Ich habe das gleiche Problem, haben Sie irgendeine Lösung auf diesem? –

Antwort

-2

Ok, also ist es in Ordnung, dass Configuration.GetSection("MyConfig").Valuenull zurückgibt. Mein Problem war, dass ich in eine Klasse injiziert wurde, die keine Controller war.

Jetzt DI in die Controller und übergeben Sie einfach die Einstellungen als Argument. Funktioniert.

+3

Warum ist es in Ordnung, null zu sein? Sogar in Startup.cs Configuration.GetSection ("Mail") gibt null zurück; – freddoo

+0

Ich habe verstanden, dass in Startup.cs können Sie nur erhalten Konfiguration json "Blätter" im Gegensatz zu .net Kern 1 oder so, und verwenden Sie solchen Code: services_.Configure (options_ => {options_.Name = Configuration.GetValue ("Corporate: Name"); options_.BrandLogo = Configuration.GetValue ("Corporate: BrandLogo");}); –