Asp.Net Core 3.1学习-读取、监听json配置文件(7)
1、前言
文件配置提供程序默认的给我们提供了ini、json、Xml等。都是读取不同格式的文件。文件配置提供程序支持文件可寻、必选、文件变更的监视。
2、读取配置文件
主要运用的包:需要Ini、xml的添加相关包就行。

这次依然使用 Core3.1 WebApi项目,在启动程序接口里面读取json配置文件,先看看json文件的格式。里面有很多嵌套的子元素。
{
"Name": "wyy",
"Age": ,
"QQ": "",
"CardInfo": {
"Name": "wyy",
"Card": "5303231999XXX",
"Birthday": "2001-02-28",
"Address": {
"Provience": "云南省",
"City": "XX市",
"Country": "XX县"
}
},
"IsMarry": true
}
我们在WeatherForecastController中修改get方法来读取配置文件
[HttpGet]
public int Get()
{
var builder = new ConfigurationBuilder();
//参数 文件路径 optional:文件不错在就会报错(默认false) reloadOnChange:文件变更了读取新的文件(默认true)
builder.AddJsonFile("config.json",optional:false,reloadOnChange:true);
var configRoot = builder.Build().GetSection("CardInfo").GetSection("Address");
var city = $"City:{configRoot["City"]}";
Console.WriteLine(city);
return ;
}
这里需要注意的是,如果有很多层就挨个的GetSection 下去,现在读取到的就是Address里面的信息。这里读取就跟MVC里面的一样的 直接configRoot["节点名"];
3、使用实体类来接收配置文件
新增一个实体类configDto,里面的信息要跟配置文件对应,数据类型也要对应,这里的原理就跟JsonConvert序列化一样 不对应的就接收不到值
public class ConfigDto
{
public string Name { get; set; }
public int Age { get; set; }
public string QQ { get; set; }
public CardInfo CardInfo { get; set; }
public bool IsMarry { get; set; } }
public class CardInfo
{
public string Name { get; set; }
public string Card { get; set; }
public string Birthday { get; set; }
public Address Address { get; set; } }
public class Address
{
public string Provience { get; set; }
public string City { get; set; }
public string Country { get; set; }
}
调用的代码
[HttpGet]
public int Get()
{
var builder = new ConfigurationBuilder();
//参数 文件路径 optional:文件不错在就会报错(默认true) reloadOnChange:文件变更了读取新的文件(默认true)
builder.AddJsonFile("config.json",optional:true,reloadOnChange:true);
ConfigDto conf = new ConfigDto();
var configRoot = builder.Build();
configRoot.Bind(conf);
return ;
}
运行项目打上断点 添加监视可以Dto也获取到值了,这样强类型的调用起来岂不是更方便。

4、监视文件的变更
[HttpGet]
public int Get()
{
var builder = new ConfigurationBuilder();
//参数 文件路径 optional:文件不错在就会报错(默认false) reloadOnChange:文件变更了读取新的文件(默认true)
builder.AddJsonFile("config.json",optional:false,reloadOnChange:true); ConfigDto conf = new ConfigDto();
var configRoot = builder.Build();
configRoot.Bind(conf);
//监视文件变更
IChangeToken token = configRoot.GetReloadToken();
ChangeToken.OnChange(() => configRoot.GetReloadToken(), () =>
{
//做你想做的事 业务逻辑
Console.WriteLine("文件修改了");
});
return ;
}
修改文件可以看到保存的时候就会出现,不知道为何会出现两次下来研究研究;

5、总结
这里主要弄了文件的读取、监视、强类型接收等操作、关于配置文件的程序修改下来慢慢研究。关于实体类型是否能设置私有有待考证。学无止境。
每日一句心灵鸡汤:其实一个人也是可以活得漂亮,自己笑给自己看,自己哭给自己听。懂得让步的人是聪明的,这是把决定事态走向的主动权握在了自己手上。感情对抗中,赢了面子就输了情分。往往死撑到底的人,都成孤家寡人。弯腰不是认输,只是为了拾起丢掉的幸福。
Asp.Net Core 3.1学习-读取、监听json配置文件(7)的更多相关文章
- asp.net core启动源码以及监听,到处理请求响应的过程
摘要 asp.net core发布至今已经将近6年了,很多人对于这一块还是有些陌生,或者说没接触过:接触过的,对于asp.net core整个启动过程,监听过程,以及请求过程,响应过程也是一知半解,可 ...
- asp.net core 二 Nginx Supervisor 负载,监听
ASP.NET Core负载均衡集群搭建(CentOS7+Nginx+Supervisor+Kestrel) asp.net core在linux运行下,一但命令行退出 ...
- ASP.NET Core Web开发学习笔记-1介绍篇
ASP.NET Core Web开发学习笔记-1介绍篇 给大家说声报歉,从2012年个人情感破裂的那一天,本人的51CTO,CnBlogs,Csdn,QQ,Weboo就再也没有更新过.踏实的生活(曾辞 ...
- ASP.NET Core实现类库项目读取配置文件
前言 之前继续在学习多线程方面的知识,忽然这两天看到博问中有个园友问到如何在.net core类库中读取配置文件,当时一下蒙了,这个提的多好,我居然不知道,于是这两天了解了相关内容才有此篇博客的出现, ...
- 一起学ASP.NET Core 2.0学习笔记(二): ef core2.0 及mysql provider 、Fluent API相关配置及迁移
不得不说微软的技术迭代还是很快的,上了微软的船就得跟着她走下去,前文一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx.superviso ...
- 如何在ASP.NET Core自定义中间件中读取Request.Body和Response.Body的内容?
原文:如何在ASP.NET Core自定义中间件中读取Request.Body和Response.Body的内容? 文章名称: 如何在ASP.NET Core自定义中间件读取Request.Body和 ...
- ASP.NET Core on K8S学习初探(1)K8S单节点环境搭建
当近期的一个App上线后,发现目前的docker实例(应用服务BFF+中台服务+工具服务)已经很多了,而我司目前没有专业的运维人员,发现运维的成本逐渐开始上来,所以容器编排也就需要提上议程.因此我决定 ...
- ASP.NET Core on K8S学习初探(3)部署API到K8S
在上一篇<基本概念快速一览>中,我们把基本的一些概念快速地简单地不求甚解地过了一下,本篇开始我们会将ASP.NET Core WebAPI部署到K8S,从而结束初探的旅程. Section ...
- ASP.NET Core on K8S学习初探(2)K8S基本概念快速一览
在上一篇<单节点环境搭建>中,通过Docker for Windows在Windows开发机中搭建了一个单节点的K8S环境,接下来就是动人心弦的部署ASP.NET Core API到K8S ...
随机推荐
- IN612 IN612L蓝牙5.0 SoC芯片替换NRF52832/NRF52840
IN612L是美国公司INPLAY的SOC产品系列之一,具有多模协同2.4G无线协议栈,支持2.4G私有协议栈以及蓝牙5.0全协议栈的SOC芯片.如2mbps高数据速率模式,125kbps/500kb ...
- MVC-前端设计
来源于:https://www.cnblogs.com/miro/p/4030622.html 从前端的UI开始 MVC分离的比较好,开发顺序没有特别要求,先开发哪一部分都可以,这次我们主要讲解前端U ...
- C#获取文件夹内文件包括子文件(递归)实例
这个在我工作上,写了一次工具项目,用上的. static ArrayList FileList = new ArrayList();//这个必须写在方法外, static ArrayList GetA ...
- memcache---mongodb---redis比较
Memcached的优点: Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key.value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右). ...
- 2019-2020-1 20199328《Linux内核原理与分析》第四周作业
<Linux内核原理与分析>第四周作业 步骤一 首先我们指定一个内核并指定内存根文件系统,这里的bzImage是vmLinux经过gzip压缩的内核,"b"表示&quo ...
- 利用POI工具读取word文档并将数据存储到sqlserver数据库中
今天实现了利用POI工具读取word文档,并将数据存储到sql数据库中,代码如下: package word; import java.io.File; import java.io.FileInpu ...
- CHIL-SQL-DELETE 语句
DELETE 语句 DELETE 语句用于删除表中的行. 语法 DELETE FROM 表名称 WHERE 列名称 = 值 Person: LastName FirstName Address Cit ...
- 在CentOS 7中安装配置JDK8
为什么80%的码农都做不了架构师?>>> ###说明 参考博客:http://blog.csdn.net/czmchen/article/details/41047187 系统环 ...
- 提高Web服务器并发响应的经历
1 前言 ---------- 最近一直在维护一个线上运行的旧系统,系统本身的问题很多,然而又有大量客户准备试用.之前一直存有侥幸心理,希望系统能神奇的顶过这段时间,但这个蜗牛般的系统残忍的告诉我们- ...
- 图论--网络流--最大流 HDU 3572 Task Schedule(限流建图,超级源汇)
Problem Description Our geometry princess XMM has stoped her study in computational geometry to conc ...