.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 配置系统入门相关推荐

  1. v2视频服务器退出系统怎么启动,V2视频会议系统入门操作手册.doc

    V2视频会议系统入门操作手册 登陆方式 打开IE(浏览器),用户访问服务器地址00,进入V2 Conference系统主界面. 首次登录视频会议服务器,系统会自动提示客户端下载安装客户端插件,用户也可 ...

  2. 杨中科.NET5视频教程更新了:DI、配置系统、Logging、EF Core等

    我的.NET5视频教程又更新了一些内容了,包含依赖注入.配置系统.日志系统以及部分Entity Framework Core的内容.Entity Framework Core还没全讲完,会继续更新. ...

  3. linux关机_3.5 开关机命令及7个运行级别《LINUX-centos7-操作系统入门到精通》

    常用的几个关机,重启命令. shutdown.init.reboot.poweroff 3.5.1 关机命令之shutdown.init 0 作用:关机,重启,定时关机 命令使用格式:shutdown ...

  4. 配置csrf_django 入门第一课 配置文件

    祭奠我逝去的一天,献给和我一样刚刚入门的小白 在我们千辛万苦创建了一个jango项目后,是时候开始配置文件了 第一:镜像路径配置 检查settings文件中templates,确认这里的镜像路径和项目 ...

  5. 无人驾驶汽车系统入门(二十六)——基于深度学习的实时激光雷达点云目标检测及ROS实现

    无人驾驶汽车系统入门(二十六)--基于深度学习的实时激光雷达点云目标检测及ROS实现 在前两篇文章中,我们使用PCL实现了在点云中对地面的过滤和点云的分割聚类,通常来说,在这两步以后我们将对分割出来的 ...

  6. 如何配置系统数据库服务器地址,如何配置系统数据库服务器地址

    如何配置系统数据库服务器地址 内容精选 换一换 华为云提供两种连接方式通过SQL Server客户端连接实例:非SSL连接和SSL连接.其中,SSL连接实现了数据加密功能,具有更高的安全性.安装SQL ...

  7. 无人驾驶汽车系统入门(十七)——无人驾驶系统基本框架

    无人驾驶汽车系统入门(十七)--无人驾驶系统基本框架 前面的文章基本上是想写什么写什么,缺乏条理,本节我们完整的梳理一遍无人驾驶系统的基本框架,帮助读者建立对整个系统的完整认识 无人驾驶系统的核心可以 ...

  8. LINUX KALI初级渗透XP系统入门学习总结(一)

    LINUX KALI在 Metasploit框架下初级渗透XP系统入门学习总结(一) Metasploit的辅助模块主要用于信息搜集阶段,功能包括扫描.口令猜解.敏感信息嗅探.FUZZ测试发掘漏洞.实 ...

  9. Prometheus监控系统入门与部署

    Prometheus监控系统入门与部署 本文介绍新一代的监控系统 Prometheus,并指导用户如何一步一步搭建一个 Prometheus 系统. 什么是 Prometheus ? Promethe ...

最新文章

  1. Cisco IOS防火墙的安全规则和配置方案
  2. Codeforces Round #257 (Div. 1) D. Jzzhu and Numbers 高维前缀和 + 容斥
  3. PhotoShop,Web前端 文字间距 与像素之间的关系(换算)
  4. plsql变量参数化_谁说建模一定要会画图?参数化设计让你事半功倍!
  5. vb 连接 mysql数据库代码_vb连接access数据库方法和代码
  6. SIM900A GPRS无线通信
  7. 考研英语 常见不规则动词过去式/过去分词
  8. 10进制颜色代码,十进制颜色查询对照表
  9. Percentile和Quartile
  10. 凌晨三点的程序员,别让你的辛苦被辜负
  11. 全国公立医院病案首页上报系统(适用于二、三级医院)
  12. 香港科大研发出Germagic杀菌涂层,可杀灭新冠病毒
  13. 采样频率和带宽的关系_ADC为什么需要采样保持器(SHA)?
  14. 用Python做一个好玩的朋友圈九宫格抽奖
  15. [机缘参悟-19]:鬼谷子-捭阖篇-阴阳即矛盾,是万事万物的基本属性,也是鬼谷子哲学的根基之一
  16. 总是封群怎么解决_我的群被封了怎么办
  17. [LeetCode-Algorithms-91] Decode Ways (2017.10.19-WEEK7)
  18. Ubuntu中动态库.so和静态库.a介绍
  19. 循环经济与可持续发展企业——章节测试1
  20. 双十一大促有哪些数码好物值得推荐?好用的数码好物清单表分享

热门文章

  1. 3个老油条私藏多年的资源库被曝光了,原来这种资源都在这里找的
  2. atcoder AtCoder Beginner Contest 210 D - National Railway(dp)
  3. r语言和python爬虫谁厉害_R vs Python: 谁是最好的数据科学语言?
  4. 安装双MeeGo系统
  5. Axure RP使用攻略--入门级(二)线框图元件
  6. 最棒的50个开源博客
  7. vue3.0中找不到组件 或者找不到对应的类型声明。怎么解决
  8. 数据可视化工具(QBarSeries柱状图)
  9. 教你用ps如何将图片、文字做出模糊斑驳的作旧效果
  10. bak文件转oracle文件,如何在Oracle 11g中恢复.bak文件(How to restore .bak file in oracle 11g)...