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<myoptions>()</myoptions> 获取值
例如:configuration["ConnectionStrings:DefaultConnection"]对应 JSON 中的
"ConnectionStrings": { "DefaultConnection": "..." }
绑定强类型配置类(更清晰、可验证)
把配置映射到 C# 类,避免硬编码字符串路径:
定义一个类(如AppSettings.cs),属性名与 JSON 层级一致 在
Program.cs中调用
builder.Services.Configure<appsettings>(builder.Configuration.GetSection("AppSettings"))</appsettings>
在需要的地方注入 IOptions<appsettings></appsettings>或
IOptionsSnapshot<appsettings></appsettings>(后者支持热重载)
注意事项和常见问题
配置键不区分大小写,但建议保持 JSON 原始大小写风格;数组和嵌套对象支持良好;环境变量、命令行参数会覆盖 JSON 值(按加载顺序后覆盖前)。
如果读不到值,请检查:
– JSON 文件的“复制到输出目录”属性是否设为“始终复制”
– 键路径拼写是否正确(冒号
:表示层级,不是点)
– 是否误用了
Get<t>()</t>却没调用
GetSection()指定根节点
基本上就这些。不用手动解析 JSON,也不用写文件读取逻辑——框架已经帮你做好了。
