c# - How to read AppSettings values from Config.json in ASP.NET Core -


i have got appsettings setup in config.json this:

{   "appsettings": {         "token": "1234"     } } 

i have searched online on how read appsettings values config.json not useful.

i tried:

var configuration = new configuration(); var appsettings = configuration.get("appsettings"); // null var token = configuration.get("token"); // null 

i know asp.net 4.0 can this:

system.configuration.configurationmanager.appsettings["token"]; 

but how do in asp.net core?

this has had few twists , turns. i've modified answer date asp.net core 1.0 (as of 15/09/2016).

this taken the official documentation:

first, add needed dependencies our project.json file, under microsoft.extensions.configuration.* namespace:

{   "dependencies": {     "microsoft.netcore.app": {       "type": "platform",       "version": "1.0.0"     },     "microsoft.aspnetcore.mvc": "1.0.0",     "microsoft.aspnetcore.server.iisintegration": "1.0.0",     "microsoft.aspnetcore.server.kestrel": "1.0.0",     "microsoft.extensions.configuration": "1.0.0",     "microsoft.extensions.configuration.fileextensions": "1.0.0",     "microsoft.extensions.configuration.json":"1.0.0",     "microsoft.extensions.options.configurationextensions": "1.0.0",   },   ... } 

to work settings in asp.net application, recommended instantiate configuration in application’s startup class. then, use options pattern access individual settings. let's have appsettings.json file looks this:

{   "applicationname": "myapp",   "version": "1.0.0" } 

and have poco object representing configuration:

public class myconfig {     public string applicationname { get; set; }     public int version { get; set; } } 

now build configuration in in startup.cs:

public class startup  {     public iconfigurationroot configuration { get; set; }      public startup(ihostingenvironment env)     {         var builder = new configurationbuilder()             .setbasepath(env.contentrootpath)             .addjsonfile("appsettings.json", optional: true, reloadonchange: true)          configuration = builder.build();     } } 

if want inject our configuration our controllers, we'll need register runtime. via startup.configureservices:

public void configureservices(iservicecollection services) {     services.addmvc();      // add functionality inject ioptions<t>     services.addoptions();      // add our config object can injected     services.configure<myconfig>(configuration); } 

and inject this:

public class homecontroller : controller {     private readonly ioptions<myconfig> config;      public homecontroller(ioptions<myconfig> config)     {         this.config = config;     }      // get: /<controller>/     public iactionresult index() => view(config.value); } 

full startup class:

public class startup  {     public iconfigurationroot configuration { get; set; }      public startup(ihostingenvironment env)     {         var builder = new configurationbuilder()             .setbasepath(env.contentrootpath)             .addjsonfile("appsettings.json", optional: true, reloadonchange: true)          configuration = builder.build();     }      public void configureservices(iservicecollection services)     {         services.addmvc();          // add functionality inject ioptions<t>         services.addoptions();          // add our config object can injected         services.configure<myconfig>(configuration);     } } 

Comments