.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. sqlite库——C实现,给sqlite数据库添加信息并把信息写入文件,删除日志和库中的日志信息
  2. React(0.13) 定义一个动态的组件
  3. P1739 表达式括号匹配
  4. 对于嵌入式交叉编译总结
  5. Mac 获取 Brew
  6. 为Laravel的artisan指令增加bash脚本
  7. 升级xcode7.0 第三方库不能用的解决方法(bitcode是什么鬼?)
  8. jsp+servlet+jdbc实现对数据库的增删改查
  9. 移除类名没有触发transition_epoll边缘触发模式
  10. 大家口中所说的A站、B站、C站、D站、E站、F站、G站、H站、I站、J站、K站、L站、M站、N站、O站、P站、Q站、R站、S站、T站、U站、V站、W站、X站、Y站、Z站都是什么网站?
  11. P-NUCLEO-IHM001 板载STLINK 驱动安装
  12. 在Unity中模拟汽车的移动
  13. 基于python的税额计算器
  14. 数据聚合与分组操作(数据分析)
  15. IDEA+Gradle搭建Spring Boot项目
  16. 考研高等数学公式总结(一)
  17. 「自动控制元件与线路」3 异步电动机及其控制
  18. 参加高中毕业十年同学会有感
  19. 2020美赛D题原文及翻译
  20. 2023-Python实现有道翻译接口加密解密

热门文章

  1. 占书明:outlook发邮件时提示“出现意外错误”的原因及解决办法!
  2. 小白学前端——让新手头疼的num++和++num问题
  3. 真正想做的人,什么都不说
  4. 效果图底图 线框图_线框图初学者指南
  5. CentOS 使用个人笔记
  6. OSChina 周日乱弹 —— 不要让父亲带小孩
  7. 分类模型评价指标KS与IV的比较
  8. 华为P30、P30pro亲手体验,最新壁纸大曝光!
  9. 程序员工作四五年后,就算大龄了吗?
  10. 2022柏林葡萄酒大奖赛 | 瑞格尔侯爵佳酿斩获两枚金奖