ASP.NET配置文件多种方式读取

ASP.NET Core项⽬默认的配置⽂件是appsettings.json,创建项⽬时就会⾃动⽣成这个⽂ 件,我们可以将⼀些配置信息存放在这个配置⽂件中,这样做的好处是当我们修改配置⽂件 时,不在需要重启应⽤,可以实现热更新。

csharp 复制代码
{
 "Logging": {
 "LogLevel": {
 "Default": "Information",
 "Microsoft.AspNetCore": "Warning"
 }
 },
 "AllowedHosts": "*",
 "msg": "hello world"
}

IConfiguration

个路由终结点来演⽰如何读取这个配置

csharp 复制代码
app.MapGet("config", (IConfiguration configuration) =>
{
 return configuration["msg"] + "_" +
     configuration["Logging:LogLevel:Default"];
});

通过IOC注⼊IConfiguration对象,我们就可以访问不同节点的配置了,如果是单层节点, 通过configuration["msg"]的⽅式进⾏访问,如果是多层级,则通过 configuration["Logging:LogLevel:Default"]来访问

通过GetValue方法获取

csharp 复制代码
app.MapGet("config", (IConfiguration configuration) =>
{
 	return configuration.GetValue<string>("msg");
});

GetValue⽆法读取对象,会报异常

通过GetSection方法获取

csharp 复制代码
app.MapGet("config", (IConfiguration configuration) =>
{
 	return configuration.GetSection("msg").Value;
});

读取对象

csharp 复制代码
app.MapGet("config", (IConfiguration configuration) =>
{
	 return configuration.GetSection("Person").Get<Person>();
});

使用委托来配置选项

先定义⼀个实体:

csharp 复制代码
public class Person
{
     public string Name { get;set; }
     public int Age { get;set; }
}

配置如下:

csharp 复制代码
"Person": {
 "Name": "张三",
 "Age": 18
}

注册配置:

csharp 复制代码
builder.Services.Configure<Person>
(builder.Configuration.GetSection("Person"));

使⽤配置:

csharp 复制代码
app.MapGet("config", (IOptions<Person> options) =>
{
 	return $"{options.Value.Name},{options.Value.Age}";
});
相关推荐
zb200641209 分钟前
CVE-2024-38819:Spring 框架路径遍历 PoC 漏洞复现
java·后端·spring
uzong17 分钟前
AI Agent 是什么,如何理解它,未来挑战和思考
人工智能·后端·架构
桦027 分钟前
【C++复习】:继承
开发语言·c++
追逐时光者30 分钟前
DotNetGuide突破了10K + Star,一份全面且免费的C#/.NET/.NET Core学习、工作、面试指南知识库!
后端·.net
何仙鸟1 小时前
GarmageSet下载和处理
java·开发语言
wefly20171 小时前
免安装!m3u8live.cn在线 M3U8 播放器,小白也能快速上手
java·开发语言·python·json·php·m3u8·m3u8在线转换
yuweiade1 小时前
springboot和springframework版本依赖关系
java·spring boot·后端
ywf12151 小时前
springboot设置多环境配置文件
java·spring boot·后端
小马爱打代码1 小时前
SpringBoot + 消息生产链路追踪 + 耗时分析:从创建到发送,全链路性能可视化
java·spring boot·后端
小码哥_常1 小时前
MyBatis批量插入:从5分钟到3秒的逆袭之路
后端