Appsettings in .NET Core

Define Your appsettings.json

Create an appsettings.json file in the root of your project:

{
  "AppSettings": {
    "FeatureToggle": true,
    "ApplicationName": "MyApp",
    "MaxUsers": 1000
  }
}


Access Configuration in Code

Using IConfiguration

using Microsoft.Extensions.Configuration;
using System;

class Program
{
    static void Main(string[] args)
    {
        var config = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .Build();

        var appName = config["AppSettings:ApplicationName"];
        var maxUsers = config["AppSettings:MaxUsers"];

        Console.WriteLine($"Application Name: {appName}");
        Console.WriteLine($"Max Users: {maxUsers}");
    }
}


Using Strongly-Typed Classes

Define a Class:

public class AppSettings
{
    public bool FeatureToggle { get; set; }
    public string ApplicationName { get; set; }
    public int MaxUsers { get; set; }
}


Bind to the Class:

var builder = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .Build();

var appSettings = builder.GetSection("AppSettings").Get<AppSettings>();

Console.WriteLine($"FeatureToggle: {appSettings.FeatureToggle}");
Console.WriteLine($"Application Name: {appSettings.ApplicationName}");
Console.WriteLine($"Max Users: {appSettings.MaxUsers}");


Environment-Specific Configuration

Create environment-specific files:

  • appsettings.Development.json
  • appsettings.Production.json


Add settings specific to the environment:


appsettings.Development.json

{
  "AppSettings": {
    "FeatureToggle": false,
    "MaxUsers": 50
  }
}


Configure the environment in Program.cs:

var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production";

var config = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .AddJsonFile($"appsettings.{environment}.json", optional: true)
    .Build();


Inject Configuration into Services

Add Configuration to DI:

builder.Services.Configure<AppSettings>(builder.Configuration.GetSection("AppSettings"));


Access in Controllers or Services:

public class HomeController : Controller
{
    private readonly AppSettings _appSettings;

    public HomeController(IOptions<AppSettings> appSettings)
    {
        _appSettings = appSettings.Value;
    }

    public IActionResult Index()
    {
        ViewData["AppName"] = _appSettings.ApplicationName;
        return View();
    }
}