CPR43 CPR43 - 1 year ago 334
ASP.NET (C#) Question

Access from class library to appsetting.json in Asp.net-core

I am trying to access

file from a class library. So far the solution that I found is to create a configuration class implementing interface
and add the json file to class and read from the same.

var configuration = new Configuration();
var connectionString= configuration.Get("connectionString");

This seems to be bad option as we have to add the json file each time we have to access the appsetting configuration. Dont we have any alternative like

Answer Source

I'm assuming you want to access the appsettings.json file from the web application since class libraries don't have an appsettings.json by default.

I create a model class that has properties that match the settings in a section in appsettings.json.

Section in appsettings.json

"ApplicationSettings": {
    "SmtpHost": "mydomain.smtp.com",
    "EmailRecipients": "me@mydomain.com;other@mydomain.com"

Matching model class

namespace MyApp.Models
    public class AppSettingsModel
        public string SmtpHost { get; set; }
        public string EmailRecipients { get; set; }

Then populate that model class and add it to the IOptions collection in the DI container (this is done in the Configure() method of the Startup class).


Then you can access that class from any method that the framework calls by adding it as a parameter in the constructor. The framework handles finding and providing the class to the constructor.

public class MyController: Controller
    private IOptions<AppSettingsModel> settings;

    public MyController(IOptions<AppSettingsModel> settings)
        this.settings = settings;

Then when a method in a class library needs the settings, I either pass the settings individually or pass the entire object.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download