2017-05-15 67 views
5

我有一個文件appsettings.json看起來像這樣:ASP.NET核心:JSON配置GetSection返回null

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

在我Startup.cs我建設我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")); 
} 

Configuration.GetSection("MyConfig")總是返回null,但該值存在於我的JSON文件中。 Configuration.GetSection("MyConfig:ConfigA")工作得很好。

我在做什麼錯?

+2

我有同樣的問題,你有對任何解決方案? –

回答

-2

好了,所以它的好是Configuration.GetSection("MyConfig").Value回報null。我的問題是我依賴注入到一個不是Controller的類。

現在我DI到Controller,只是通過設置作爲參數。作品。

+3

爲什麼可以爲空? 即使在Startup.cs中Configuration.GetSection(「Mail」)返回null; – freddoo

+0

予理解的是,在Startup.cs你只能得到配置JSON的「葉子」不像在.NET芯1左右,並使用這樣的代碼:services_.Configure (OPTIONS_ => {options_.Name = Configuration.GetValue (「Corporate:Name」); options_.BrandLogo = Configuration.GetValue (「Corporate:BrandLogo」);}); –