What is the ASP.NET Core

appsettings.json

file?

In .NET applications, appsettings.json is a configuration file used to store settings and configuration data. This file is part of the newer configuration system introduced in .NET Core, which is also available in later versions of .NET Framework through the use of compatible libraries. The appsettings.json file is a JSON file, making it easy to read and write.


Additional Notes:


Example
        
            {
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning"
    }
  },
  "ConnectionStrings": {
    "DefaultConnection": "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"
  },
  "AppSettings": {
    "PageSize": 10,
    "ApiKey": "12345"
  }
}
        
    

How to Access appsettings.json in .NET


1. Basic Reading of appsettings.json
In appsettings.json:
        
            {
  "ConnectionStrings": {
    "DefaultConnection": "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"
  },
  "AppSettings": {
    "PageSize": 10,
    "ApiKey": "12345",
    "Profile": {
       "UserName": "lorem",
       "Password": "somepassword"
    }
  },
  "Email": "santash92@gmail.com"
}
        
    
        
            public void SomeMethod(IConfiguration configuration)
{
    // 1. way
    var value1 = configuration["Email"]; // Result: santash92@gmail.com
    // 2. way
    var value2 = _configuration.GetSection("Email").Value; // Result: santash92@gmail.com
    // 3.way
    var value3 = _configuration.GetValue<string>("Email"); // Result: santash92@gmail.com
}
        
    
        
            public void SomeMethod(IConfiguration configuration)
{
    var someValue = configuration["Age"]; // Result: null
}
        
    

2. Reading a Specific Value
In appsettings.json:
        
            {
  "ConnectionStrings": {
    "DefaultConnection": "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"
  },
  "AppSettings": {
    "PageSize": 10,
    "ApiKey": "12345",
    "Profile": {
       "UserName": "lorem",
       "Password": "somepassword"
    }
  },
  "Email": "santash92@gmail.com"
}
        
    
        
            public void SomeMethod(IConfiguration configuration)
{
    // 1. way
    var value1 = configuration["AppSettings:PageSize"]; // Result: 10
    // 2. way
    var value2 = _configuration.GetSection("AppSettings:PageSize").Value; // Result: 10
    // 3. way
    var value3 = _configuration.GetSection("AppSettings").GetSection("PageSize").Value; // Result: 10
    // 4.way
    var value4 = _configuration.GetValue<int>("AppSettings:PageSize"); // Result: 10
    
}
        
    
        
            public void SomeMethod(IConfiguration configuration)
{
    // 1. way
    var value1 = configuration["AppSettings:Profile:UserName"]; // Result: lorem
    // 2. way
    var value2 = _configuration.GetSection("AppSettings:Profile:UserName").Value; // Result: lorem
    // 3. way
    var value3 = _configuration.GetSection("AppSettings").GetSection("Profile").GetSection("UserName").Value; // Result: lorem
    // 4.way
    var value4 = _configuration.GetValue<string>("AppSettings:Profile:UserName"); // Result: lorem
}
        
    

3. Strongly Typed Configuration
In appsettings.json:
        
            {
  "AppSettings": {
    "PageSize": 10,
    "ApiKey": "12345"
  },
  "Email": "santash92@gmail.com"
}
        
    
Define a class:
        
            public class MySettings
{
    public int PageSize { get; set; }
    public string ApiKey { get; set; }
}
        
    
Reading the configuration (Object):
        
            public void SomeMethod(IConfiguration configuration)
{
    var mySettings = configuration.GetSection("AppSettings").Get<MySettings>();
    Console.WriteLine(mySettings.PageSize) // Result: 10
}
        
    
Reading the configuration (string):
        
            public void SomeMethod(IConfiguration configuration)
{
    var email = configuration.GetSection("Email").Get<string>();
    Console.WriteLine(email) // Result: santash92@gmail.com
}
        
    

4. Using Options Pattern
In appsettings.json:
        
            {
  "AppSettings": {
    "PageSize": 10,
    "ApiKey": "12345"
  },
  "Email": "santash92@gmail.com"
}
        
    
Define a class:
        
            public class MySettings
{
    public int PageSize { get; set; }
    public string ApiKey { get; set; }
}
        
    
Registering in Startup.cs:
        
            public void ConfigureServices(IServiceCollection services)
{
    services.Configure<MySettings>(Configuration.GetSection("AppSettings"));
}
        
    
Using in a class:
        
            public class SomeService
{
    private readonly MySettings _mySettings;

    public SomeService(IOptions<MySettings> options)
    {
        _mySettings = options.Value;
    }
    
    public void ReadSettings()
    {
       var apiKey = _mySettings.ApiKey; // Result: "12345"
    }
}
        
    

5. Reading Connection Strings
        
            {
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning"
    }
  },
  "ConnectionStrings": {
    "DefaultConnection": "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"
  },
  "AppSettings": {
    "PageSize": 10,
    "ApiKey": "12345"
  }
}
        
    
        
            public void SomeMethod(IConfiguration configuration)
{
    var connectionString = configuration.GetConnectionString("DefaultConnection");
}
        
    

6. Reading Arrays and Lists
In appsettings.json:
        
            {
    "MyArray": ["Value1", "Value2", "Value3"],
    "Countries": {
        "Asia": ["Singapore", "Kyrgyzstan", "Malaysia"]
    }
}
        
    
Reading in C#:
        
            public void SomeMethod(IConfiguration configuration)
{
    var myArray = configuration.GetSection("MyArray").Get<List<string>>();
    var countries = configuration.GetSection("Countries:Asia").Get<List<string>>();
}