.Net 配置系统入门
.Net中的配置系统支持丰富的配置源,包括文件(json、xml、ini等)、注册表、环境变量、命令行、azure key vault等,还可以配置自定义配置源。可以跟踪配置的改变,可以按照优先级覆盖。
传统项目一般是从web.config文件中读取配置项的值,配置项一般是xml格式。如下图所示:
这种配置方式有一个弊端,当配置项比较复杂时,比如有多个层级,一层层嵌套,看起来非常不直观。这时候用json格式的配置就显得很方便。下面用代码示例展示json格式配置文件的基本用法(代码基于.NetCore3.1版本):
方法一:
1.创建一个json文件,文件名称随意(例如:config.json),设置文件属性为“如果较新则复制”。
2.nuget安装:Microsoft.Extensions.Configuration和Microsoft.Extensions.Configuration.Json;
3.代码示例:
static void Main(string[] args){ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();configurationBuilder.AddJsonFile("config.json", optional: true, reloadOnChange: true);IConfigurationRoot root = configurationBuilder.Build();string name = root["name"];Console.WriteLine($"name={name}");string address = root.GetSection("proxy:address").Value;Console.WriteLine($"address={address}");Console.ReadLine();}
执行结果:
如果读取根节点的配置项,比如name,直接root["name"]就可以。
如果读取子节点的配置项,比如proxy节点下的address,则需要调用GetSection方法,中间的参数名称用冒号(:)连接,表示子节点,root.GetSection("proxy:address").Value
如果有多级子节点,一直用冒号连接,直到最内层节点为止,比如要获取到addr1的值
string address = root.GetSection("proxy:address:addr1").Value;
方法二:
除了根据节点的名称读取外,还可以将json配置文件的信息映射为class类,通过常规的(.)点调用,获取到配置项的值:
1.nuget安装:Microsoft.Extensions.Configuration.Binder;
2.代码示例:
static void Main(string[] args){ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();configurationBuilder.AddJsonFile("config.json", optional: true, reloadOnChange: true);IConfigurationRoot root = configurationBuilder.Build();ConfigJson config = root.Get<ConfigJson>();//将json配置项映射为一个对象Console.WriteLine(config.name);Console.WriteLine(config.proxy.port);Console.ReadLine();}
自定义类,类中的字段名称跟json配置项名称对应:
class ConfigJson{public string name { get; set; }public string age { get; set; }public Proxy proxy { get; set; }}class Proxy{public string address { get; set; }public int port { get; set; }}
执行结果:
这种方法跟第一种的区别是,这里使用IConfigurationRoot.Get方法,将json配置项映射为一个对象。
以上两种方法在实际的开发中,并不会这么写,因为比较麻烦,但这是基础用法,下面文章会对上面的基础写法封装,更方便在实际开发中使用。
.Net 配置系统入门相关推荐
- v2视频服务器退出系统怎么启动,V2视频会议系统入门操作手册.doc
V2视频会议系统入门操作手册 登陆方式 打开IE(浏览器),用户访问服务器地址00,进入V2 Conference系统主界面. 首次登录视频会议服务器,系统会自动提示客户端下载安装客户端插件,用户也可 ...
- 杨中科.NET5视频教程更新了:DI、配置系统、Logging、EF Core等
我的.NET5视频教程又更新了一些内容了,包含依赖注入.配置系统.日志系统以及部分Entity Framework Core的内容.Entity Framework Core还没全讲完,会继续更新. ...
- linux关机_3.5 开关机命令及7个运行级别《LINUX-centos7-操作系统入门到精通》
常用的几个关机,重启命令. shutdown.init.reboot.poweroff 3.5.1 关机命令之shutdown.init 0 作用:关机,重启,定时关机 命令使用格式:shutdown ...
- 配置csrf_django 入门第一课 配置文件
祭奠我逝去的一天,献给和我一样刚刚入门的小白 在我们千辛万苦创建了一个jango项目后,是时候开始配置文件了 第一:镜像路径配置 检查settings文件中templates,确认这里的镜像路径和项目 ...
- 无人驾驶汽车系统入门(二十六)——基于深度学习的实时激光雷达点云目标检测及ROS实现
无人驾驶汽车系统入门(二十六)--基于深度学习的实时激光雷达点云目标检测及ROS实现 在前两篇文章中,我们使用PCL实现了在点云中对地面的过滤和点云的分割聚类,通常来说,在这两步以后我们将对分割出来的 ...
- 如何配置系统数据库服务器地址,如何配置系统数据库服务器地址
如何配置系统数据库服务器地址 内容精选 换一换 华为云提供两种连接方式通过SQL Server客户端连接实例:非SSL连接和SSL连接.其中,SSL连接实现了数据加密功能,具有更高的安全性.安装SQL ...
- 无人驾驶汽车系统入门(十七)——无人驾驶系统基本框架
无人驾驶汽车系统入门(十七)--无人驾驶系统基本框架 前面的文章基本上是想写什么写什么,缺乏条理,本节我们完整的梳理一遍无人驾驶系统的基本框架,帮助读者建立对整个系统的完整认识 无人驾驶系统的核心可以 ...
- LINUX KALI初级渗透XP系统入门学习总结(一)
LINUX KALI在 Metasploit框架下初级渗透XP系统入门学习总结(一) Metasploit的辅助模块主要用于信息搜集阶段,功能包括扫描.口令猜解.敏感信息嗅探.FUZZ测试发掘漏洞.实 ...
- Prometheus监控系统入门与部署
Prometheus监控系统入门与部署 本文介绍新一代的监控系统 Prometheus,并指导用户如何一步一步搭建一个 Prometheus 系统. 什么是 Prometheus ? Promethe ...
最新文章
- Cisco IOS防火墙的安全规则和配置方案
- Codeforces Round #257 (Div. 1) D. Jzzhu and Numbers 高维前缀和 + 容斥
- PhotoShop,Web前端 文字间距 与像素之间的关系(换算)
- plsql变量参数化_谁说建模一定要会画图?参数化设计让你事半功倍!
- vb 连接 mysql数据库代码_vb连接access数据库方法和代码
- SIM900A GPRS无线通信
- 考研英语 常见不规则动词过去式/过去分词
- 10进制颜色代码,十进制颜色查询对照表
- Percentile和Quartile
- 凌晨三点的程序员,别让你的辛苦被辜负
- 全国公立医院病案首页上报系统(适用于二、三级医院)
- 香港科大研发出Germagic杀菌涂层,可杀灭新冠病毒
- 采样频率和带宽的关系_ADC为什么需要采样保持器(SHA)?
- 用Python做一个好玩的朋友圈九宫格抽奖
- [机缘参悟-19]:鬼谷子-捭阖篇-阴阳即矛盾,是万事万物的基本属性,也是鬼谷子哲学的根基之一
- 总是封群怎么解决_我的群被封了怎么办
- [LeetCode-Algorithms-91] Decode Ways (2017.10.19-WEEK7)
- Ubuntu中动态库.so和静态库.a介绍
- 循环经济与可持续发展企业——章节测试1
- 双十一大促有哪些数码好物值得推荐?好用的数码好物清单表分享
热门文章
- 3个老油条私藏多年的资源库被曝光了,原来这种资源都在这里找的
- atcoder AtCoder Beginner Contest 210 D - National Railway(dp)
- r语言和python爬虫谁厉害_R vs Python: 谁是最好的数据科学语言?
- 安装双MeeGo系统
- Axure RP使用攻略--入门级(二)线框图元件
- 最棒的50个开源博客
- vue3.0中找不到组件 或者找不到对应的类型声明。怎么解决
- 数据可视化工具(QBarSeries柱状图)
- 教你用ps如何将图片、文字做出模糊斑驳的作旧效果
- bak文件转oracle文件,如何在Oracle 11g中恢复.bak文件(How to restore .bak file in oracle 11g)...