C# 如何配置和读取appsettings.json - .NET Core配置系统详解

admin 百科 13
.NET Core及后续版本默认使用appsettings.json作为配置源,通过IConfiguration接口自动加载、合并多源配置,并支持环境变量覆盖;推荐绑定强类型对象或使用IOptionsMonitor实现热重载。

C# 如何配置和读取appsettings.json - .NET Core配置系统详解-第1张图片-佛山资讯网

在 .NET Core 及后续版本(.NET 5+)中,appsettings.json 是默认推荐的配置源,它通过统一的 IConfiguration 接口被读取和管理。配置不是“手动解析 JSON”,而是由 配置提供程序(Configuration Providers) 自动加载、合并、分层,并支持环境变量、命令行参数等多源叠加。

配置文件结构与约定

appsettings.json 是标准 JSON 格式,支持嵌套对象和数组。框架按层级自动映射为冒号分隔的键(如 "Logging:LogLevel:Default")。常见结构如下:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "ConnectionStrings": {
    "DefaultConnection": "Server=.;Database=MyApp;Trusted_Connection=true;"
  },
  "AppSettings": {
    "SiteName": "My Site",
    "PageSize": 20
  }
}

注意:文件名不重要,但必须在 Program.cs 中显式添加对应提供程序appsettings.Development.json 等环境变体需配合 IWebHostEnvironment.EnvironmentName 自动加载。

在 Program.cs 中注册配置源

.NET 6+ 使用最小托管模型,配置构建在 Host.CreateDefaultBuilder() 或手动 Host.CreateApplicationBuilder() 中完成。默认已包含 appsettings.json 和环境变体,但可自定义:

  • 确保 appsettings.json“复制到输出目录”属性设为“始终复制”(否则运行时找不到)
  • 若需额外 JSON 文件(如 secrets.json),用 builder.Configuration.AddJsonFile("custom.json", optional: true)
  • 环境变量优先级高于 JSON,可用于覆盖敏感值(如连接字符串)

示例(.NET 7+):

var builder = Host.CreateApplicationBuilder(args);
// 默认已加载 appsettings.json + appsettings.{Environment}.json
// 如需额外文件:
builder.Configuration.AddJsonFile("appsettings.extra.json", optional: true);

读取配置的三种常用方式

1. 直接通过 IConfiguration 读取(适合简单值)
注入 IConfiguration,用索引器或 GetValue<t></t> 获取:

var connectionString = configuration["ConnectionStrings:DefaultConnection"];
var pageSize = configuration.GetValue("AppSettings:PageSize");
var siteName = configuration.GetValue("AppSettings:SiteName");

2. 绑定到强类型对象(推荐用于结构化配置)
定义 POCO 类(字段/属性名需与 JSON 键路径匹配):

标签: js json go app 环境变量 microsoft 配置文件 c# .net

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~