2017-05-15 33 views
5

मैं एक फ़ाइल appsettings.json है कि इस तरह दिखता है:ASP.NET कोर: JSON विन्यास GetSection रिटर्न अशक्त

{ 
    "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").Valuenull देता है। मेरी समस्या यह थी कि मैं उस वर्ग में इंजेक्शन देता हूं जो Controller नहीं था।

अब मैं Controller में DI और बस एक तर्क के रूप में सेटिंग्स को पास करता हूं। काम करता है।

+3

शून्य होना ठीक क्यों है? स्टार्टअप.cs में भी कॉन्फ़िगरेशन। गेटसेक्शन ("मेल") शून्य लौटाता है; – freddoo

+0

मुझे समझ में आया कि Startup.cs में आप केवल .NET कोर 1 या उससे भी कम कॉन्फ़िगरेशन जेसन की "पत्तियां" प्राप्त कर सकते हैं, और ऐसे कोड का उपयोग कर सकते हैं: services_.Configure (options_ => {options_.Name = Configuration.GetValue ("कॉर्पोरेट: नाम"); विकल्प_। ब्रैंडलोगो = कॉन्फ़िगरेशन। गेटवैल्यू ("कॉर्पोरेट: ब्रैंडलोगो");}); –

संबंधित मुद्दे