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