ASP.NET Core 配置与获取
ASP.NET Core 中,可以使用 ConfigurationBuilder 对象来构建。
主要分为三部:配置数据源 -> ConfigurationBuilder -> 使用。
数据源可来自字典或配置文件。
数据源要么继承 IConfigurationSource ,要么从配置文件中读取。
1,来自字典
我们先使用字典存储键值对,来设置配置, test = 配置,然后使用 ConfigurationBuilder.Add() 方法添加数据源, Add 方法可以添加继承了 IConfigurationSource 的数据源。
MemoryConfigurationSource 继承了 IConfigurationSource ,使用字典作为数据源。
            var dic = new Dictionary<string, string>()
            {
                ["test"] = "配置"
            };
            var config = new ConfigurationBuilder()
                .Add(new MemoryConfigurationSource() { InitialData = dic }).Build();
            string test = config["test"];
老是 new 不太爽,可以使用下面的方法来读取字典中的数据源:
            var dic = new Dictionary<string, string>()
            {
                ["test"] = "配置"
            };
            var config = new ConfigurationBuilder()
                .AddInMemoryCollection(dic)
                .Build();
            string test = config["test"];
2,来自配置文件
假如在 项目根目录下创建一个 json 文件,内容如下:
{
"test":"配置"
}
那么可以这样读取配置:
            var config = new ConfigurationBuilder()
                .AddJsonFile("test.json")
                .Build();
            string test = config["test"];
            Console.WriteLine(test);
如果配置文件不在根目录下,则可以使用 SetBasePath() 来定义路径,示例如下:
            var config = new ConfigurationBuilder()
                .SetBasePath("E:\\test\\aaa")
                .AddJsonFile("test.json")
                .Build();
上面看到,获取配置项是非常简单的, config["{KeyName}"] 即可获得 value。
另外,可以监控 json 文件,当 json 文件发生更改时,主动更新。
                config.AddJsonFile("appsettings.json",
                    optional: true,
                    reloadOnChange: true);
3,层次结构
配置数据源可以有层次结构。
ASP.NET Core 中,都会有个 appsettings.json 文件,其内容如下:
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  }
}
那么我们使用时,可以使用 : 符号获取下一层子项的配置。
            var config = new ConfigurationBuilder()
                .AddJsonFile("appsettings.json")
                .Build();
            string test = config["Logging:LogLevel:Default"];
如果你只想 获取 json 文件中 LogLevel 部分的配置,可以使用 GetSection() 方法。
            var config = new ConfigurationBuilder()
                .AddJsonFile("appsettings.json")
                .Build()
                .GetSection("Logging:LogLevel");
            string test = config["Default"];
通过 json 配置文件,我们可以很方便地构建层级结构的配置,如果想在字典中存储,可以使用 "{k1}:{k2}" 这种形式存。例如:
            var dic = new Dictionary<string, string>()
            {
                ["testParent:Child1"] = "6",
                ["testParent:Child2"] = "666"
            };
            var config = new ConfigurationBuilder()
                .AddInMemoryCollection(dic)
                .Build().GetSection("testParent");
            string test = config["Child1"];
4,映射
我们可以使用 Get<>() 方法,将配置映射为对象。
    public class TestOptions
    {
        public string A { get; set; }
        public string B { get; set; }
        public string C { get; set; }
    }
            var dic = new Dictionary<string, string>()
            {
                ["A"] = "6",
                ["B"] = "66",
                ["C"] = "666"
            };
            TestOptions config = new ConfigurationBuilder()
                .AddInMemoryCollection(dic)
                .Build().Get<TestOptions>();
ASP.NET Core 配置与获取的更多相关文章
- ASP.NET Core 注入和获取 AppSettings 配置
		ASP.NET Core 项目中有个appsettings.json配置文件,用于存放一些配置信息,比如数据库连接字符串等,但访问的话,只能在 ASP.NET Core 项目中获取,如果我们在其他项目 ... 
- 关于Asp.net core配置信息读取的源码分析梳理
		概述 我们都知道asp.net core配置信息的读取离不开IConfigurationSource和IConfigurationProvider这两个类,ConfigurationSource可以提 ... 
- ASP.NET Core配置Kestrel 网址Urls
		ASP.NET Core中如何配置Kestrel Urls呢,大家可能都知道使用UseUrls() 方法来配置. 今天给介绍全面的ASP.NET Core 配置 Urls,使用多种方式配置Urls.让 ... 
- ASP.NET Core 配置 EF 框架服务 - ASP.NET Core 基础教程 - 简单教程,简单编程
		原文:ASP.NET Core 配置 EF 框架服务 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 配置 EF 框架服务 上一章节中我们了解了 Entity ... 
- ASP.NET Core 配置 EF SQLite 支持 - ASP.NET Core 基础教程 - 简单教程,简单编程
		原文:ASP.NET Core 配置 EF SQLite 支持 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 配置 EF SQLite 支持 上一章节我有提 ... 
- ASP.NET Core 配置 Entity Framework Core - ASP.NET Core 基础教程 - 简单教程,简单编程
		原文:ASP.NET Core 配置 Entity Framework Core - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 配置 Entity Fram ... 
- ASP.NET Core 配置 MVC - ASP.NET Core 基础教程 - 简单教程,简单编程
		原文:ASP.NET Core 配置 MVC - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 配置 MVC 前面几章节中,我们都是基于 ASP.NET 空项目 ... 
- Asp.Net Core 减少Controller获取重复注入对象
		原文:Asp.Net Core 减少Controller获取重复注入对象 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012770274/art ... 
- 在ASP.NET Core配置环境变量和启动设置
		在这一部分内容中,我们来讨论ASP.NET Core中的一个新功能:环境变量和启动设置,它将开发过程中的调试和测试变的更加简单.我们只需要简单的修改配置文件,就可以实现开发.预演.生产环境的切换. A ... 
随机推荐
- troubleshoot之:分析OutOfMemoryError异常
			目录 简介 OutOfMemoryError java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: GC Ov ... 
- Clion C++ 乱码,debug乱码
			Clion新建项目,默认是使用UTF-8 Clion点击运行图标,使用的terminal不能正常显示UTF-8,因为其使用的是GBK编码 所以只要将源文件编码改为GBK就好了 1.界面右下角,有个UT ... 
- [Kong 与 Konga与postgres数据库] 之 Kuberneres 部署
			1.Kong的概述 Kong是一个clould-native.快速的.可扩展的.分布式的微服务抽象层(也称为API网关.API中间件或在某些情况下称为服务网格)框架.Kong作为开源项目在2015年推 ... 
- 关于Redis的工作模式
			1.哨兵模式 在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master. 缺点 ... 
- golang 判断前缀后缀、包含关系
			HasPrefix 判断字符串 s 是否以 prefix 开头:strings.HasPrefix(s, prefix string) bool HasSuffix 判断字符串 s 是否以 suffi ... 
- 第二篇Scrum冲刺博客--Interesting-Corps
			第二篇Scrum冲刺博客 站立式会议 1.会议照片 2.队友完成情况 团队成员 昨日完成 今日计划 鲍鱼铭 主页页面和探测空间设计及布局实现 主页页面跳转社区功能及社区设计及布局实现 叶学涛 设计页面 ... 
- ARM开发板挂载Ubuntu18.04主机的NFS共享文件夹
			环境 ubuntu主机环境:Window10 下装VMWare下装的 ubuntu18.04LTS x64 IP 192.168.10.119 Window10下配置192.168.10该网段 开发板 ... 
- 区块链入门到实战(35)之Solidity – 变量作用域
			局部变量的作用域仅限于定义它们的函数,但是状态变量可以有三种作用域类型. Public – 公共状态变量可以在内部访问,也可以通过消息访问.对于公共状态变量,将生成一个自动getter函数. Inte ... 
- 超市管理系统C语言
			登录系统 # include <stdio.h> //头文件 # include <string.h> //字符串头文件 # include <stdlib.h> ... 
- 卡方检验(Chi_square_test): 原理及python实现
			概述 What for?主要用在某个变量(或特征)值是不是和应变量有显著关系,换种说法就是看某个变量是否独立 \(X^2=\sum{\frac{(observed-expected)^2}{expec ... 
