2017-05-15 5 views
5

を返し、私はこのようなファイルappsettings.json持っている:私のStartup.csASP.NETコア:JSON設定GetSectionがnull

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

を、私は私の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").Valuenullを返すので大丈夫です。私の問題は、依存関係がControllerではないクラスに注入されたことでした。

今やDIはControllerに入り、設定を引数として渡します。作品。

+3

nullにするのがなぜ大丈夫ですか? Startup.csでも、Configuration.GetSection( "Mail")はnullを返します。 – freddoo

+0

Startup.csでは、.net core 1とは異なり、jsonの「葉」を得ることができ、そのようなコードを使用することができると理解しました:services_.Configure (options_ => {options_.Name = Configuration.GetValue (Corporate:Name)); options_.BrandLogo = Configuration.GetValue ( "Corporate:BrandLogo");}); –

関連する問題