2017-05-15 68 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”);}); –