ASP.NET appsettings.json
最后修改于 2025 年 4 月 3 日
本文将探讨 ASP.NET 8 中的 appsettings.json 文件。该文件是现代 ASP.NET 应用程序中存储配置设置的主要方式。
ASP.NET 提供了一个灵活的配置系统,可以与各种源协同工作。appsettings.json 文件是 .NET 中默认的基于 JSON 的配置文件。
基本定义
appsettings.json 文件是 ASP.NET Core 和 .NET 应用程序中使用的 JSON 配置文件。它以结构化的格式存储应用程序设置。
appsettings.json 中的配置值可以在整个应用程序中访问。该文件支持通过 JSON 对象和数组进行分层数据组织。
ASP.NET 在应用程序启动期间会自动加载 appsettings.json。特定于环境的版本(如 appsettings.Development.json)可以根据当前环境覆盖设置。
ASP.NET appsettings.json 示例
以下示例演示了如何在具有 Web API 控制器的 ASP.NET 8 应用程序中使用 appsettings.json。
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"AppSettings": {
"ApiKey": "abc123xyz456",
"MaxItems": 100,
"FeatureFlags": {
"EnableNewSearch": true,
"EnableExperimentalApi": false
},
"AllowedOrigins": [
"https://example.com",
"https://test.example.com"
]
}
}
此 appsettings.json 文件包含标准的日志记录配置和自定义应用程序设置。AppSettings 部分演示了各种配置值类型。
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Bind configuration to a strongly-typed class
builder.Services.Configure<AppSettings>(
builder.Configuration.GetSection("AppSettings"));
var app = builder.Build();
app.MapControllers();
app.Run();
此 Program.cs 文件设置了应用程序,并将 AppSettings 部分绑定到一个强类型配置类。Configure 方法支持设置的依赖注入。
public class AppSettings
{
public string ApiKey { get; set; }
public int MaxItems { get; set; }
public FeatureFlags FeatureFlags { get; set; }
public string[] AllowedOrigins { get; set; }
}
public class FeatureFlags
{
public bool EnableNewSearch { get; set; }
public bool EnableExperimentalApi { get; set; }
}
此强类型配置类反映了 appsettings.json 中 AppSettings 部分的结构。嵌套对象由单独的类表示。
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
[ApiController]
[Route("api/[controller]")]
public class SettingsController : ControllerBase
{
private readonly AppSettings _settings;
public SettingsController(IOptions<AppSettings> settings)
{
_settings = settings.Value;
}
[HttpGet]
public IActionResult GetSettings()
{
return Ok(new
{
_settings.ApiKey,
_settings.MaxItems,
_settings.FeatureFlags,
_settings.AllowedOrigins
});
}
[HttpGet("feature-flags")]
public IActionResult GetFeatureFlags()
{
return Ok(_settings.FeatureFlags);
}
}
此控制器演示了两种访问配置设置的方法。构造函数通过 IOptions<T> 注入强类型 AppSettings。
第一个操作返回所有设置,第二个操作侧重于功能标志。IOptions<T> 模式提供了对配置值的类型安全访问。
该示例展示了如何在 appsettings.json 中组织复杂配置并在整个应用程序中访问它。强类型配置提高了代码的安全性与可维护性。
来源
在本文中,我们探讨了 ASP.NET 8 中的 appsettings.json 文件。这个强大的配置系统支持简单和复杂的应用程序设置。