Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Access appsettings.json values in controller classes

Tags:

Having trouble figuring out how to read appsettings.json values outside of the startup.cs. What I would like to do is, for instance, is in the _Layout.cshtml, add the site name from the config:

For example:

ViewData["SiteName"] = Configuration.GetValue<string>("SiteSettings:SiteName"); 

Or even better:

public class GlobalVars {     public static string SiteName => Configuration.GetValue<string>("SiteSettings:SiteName"); } 

Here's my code thus far:

[appsettings.json]

"SiteSettings": {     "SiteName": "MySiteName" } 

[startup.cs]

public Startup(IHostingEnvironment env) {     var builder = new ConfigurationBuilder()         .SetBasePath(env.ContentRootPath)         .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)         .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)         .AddEnvironmentVariables();     Configuration = builder.Build();      var siteName = Configuration.GetValue<string>("SiteSettings:SiteName"); }  public IConfigurationRoot Configuration { get; } 

Maybe I'm reading the docs wrong, but I can't seem to expose the Configuration object outside of the Startup class.

like image 682
Andy Evans Avatar asked Jul 13 '16 18:07

Andy Evans


People also ask

How do I access Appsettings json in controller?

Using IConfiguration The IConfiguration is available in the dependency injection (DI) container, so you can directly access JSON properties by simply injecting IConfiguration in the constructor of a controller or class. It represents a set of key/value application configuration properties.

How get values from Appsettings in NET Core?

There are two methods to retrieve our values, string dbConn = configuration. GetSection("MySettings"). GetSection("DbConnection").


1 Answers

In your Startup.cs

    public void ConfigureServices(IServiceCollection services)     {         services.AddSingleton<IConfiguration>(Configuration);     } 

then in your controller:

public class ValuesController : Controller {     IConfiguration configuration;      public ValuesController(IConfiguration configuration)     {         this.configuration = configuration;     } } 
like image 151
Gabriel Ferrarini Avatar answered Sep 27 '22 21:09

Gabriel Ferrarini