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 ...
随机推荐
- Linux命令与Shell
Linux 目录结构及解释 查看命令行执行完位置: echo $BASH 命令记录 mkdir mkdir命令 用来创建目录. 语法:mkdir (选项)(参数) 主要选项: -m<目标属性& ...
- 【题解】P2480 [SDOI2010]古代猪文 - 卢卡斯定理 - 中国剩余定理
P2480 [SDOI2010]古代猪文 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 猪王国的文明源远流长,博大精 ...
- Java集合案例(产生不重复随机数)
获取10个1-20之间的随机数,要求不能重复 用数组实现,但是数组的长度是固定的,长度不好确定.所以我们使用集合实现. 分析:A:创建产生随机数的对象B:创建一个存储随机数的集合C:定义一个统计变量. ...
- Bat 脚本 删除某一行
findstr /v /i /c:"kiwi" /c:"oranges" myfile.txt >newfile.txt
- 日志分析工具ELK(一)
一.ELK介绍 1.1 elasticsearch 1.1.1 elasticsearch介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎 ...
- 自定义spring boot的自动配置
文章目录 添加Maven依赖 创建自定义 Auto-Configuration 添加Class Conditions 添加 bean Conditions Property Conditions Re ...
- google proto buf学习
2019独角兽企业重金招聘Python工程师标准>>> protobuf是Google开发的一个序列化框架,类似XML,JSON,基于二进制,比传统的XML表示同样一段内容要短小得多 ...
- js数组排序和打乱
js数组根据不同的业务需求,会要求数组有序或者无序,记录一下流传较广,通用性较强的排序和乱序方法. 数组排序: arr.sort(function(a,b){//从小到大 return a-b;[re ...
- php-fpm7 启动脚本
[root@bbs init.d]$ cat php-fpm7 #!/bin/sh # DateTime:20170918 # Source function library. . /etc/rc.d ...
- 学数据库你竟然不用用JAVA写代码,可惜你遇到了我! JAVA连接数据库(JDBC)的安装使用教程
Step 1 你得有Eclipse 没有出门右拐,我教不了你. Step 2 你得有Mysql MySQL的详细安装过程,我在另一篇博客中给出.戳我 Step 3 安装JDBC 可以去官网下,如果用的 ...