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();
}
}