ASP.NET Core 默认通过 Configuration API 自动加载 appsettings.json,注入 IConfiguration 即可读取;推荐绑定强类型配置类并使用 IOptions,注意键路径用冒号、文件需设为“始终复制”。

ASP.NET Core 读取 appsettings.json 主要靠内置的 配置系统(Configuration API),默认已自动加载该文件,你只需注入 IConfiguration 就能直接使用。
自动加载机制
新建的 ASP.NET Core 项目在 Program.cs 中默认已通过 Host.CreateDefaultBuilder() 或 WebApplicationBuilder 加载了 appsettings.json 和环境对应文件(如 appsettings.Production.json),无需手动添加。
这意味着:只要文件存在且格式正确,配置就已就绪。
在服务中读取配置(推荐方式)
最安全、可测试、符合依赖注入原则的做法是——通过构造函数注入 IConfiguration:
- 在控制器、服务类或中间件中声明构造函数参数
IConfiguration configuration - 用
configuration["Section:Key"]或configuration.GetSection("Section").Get获取值() - 例如:
configuration["ConnectionStrings:DefaultConnection"]对应 JSON 中的"ConnectionStrings": { "DefaultConnection": "..." }
绑定强类型配置类(更清晰、可验证)
把配置映射到 C# 类,避免硬编码字符串路径:
- 定义一个类(如
AppSettings.cs),属性名与 JSON 层级一致 - 在
Program.cs中调用builder.Services.Configure(builder.Configuration.GetSection("AppSettings")) - 在需要的地方注入
IOptions或IOptionsSnapshot(后者支持热重载)
注意事项和常见问题
配置键不区分大小写,但建议保持 JSON 原始大小写风格;数组和嵌套对象支持良好;环境变量、命令行参数会覆盖 JSON 值(按加载顺序后覆盖前)。
如果读不到值,请检查:
– JSON 文件的“复制到输出目录”属性是否设为“始终复制”
– 键路径拼写是否正确(冒号 : 表示层级,不是点)
– 是否误用了 Get 却没调用 GetSection() 指定根节点
基本上就这些。不用手动解析 JSON,也不用写文件读取逻辑——框架已经帮你做好了。










