.NET Core 配置Configuration杂谈
前言
.NET Core 在配置文件的操作上相对于.NET Framework做了不少改变,今天来聊一聊。关于Configuration的Package都是以Microsoft.Extensions.Configuration
开头的支持多种方式的配置,包括内存、Json文件、XML文件等等,今天我们主要用Json格式文件配置来演示。
开始
新建一个ConsoleApp(这里为了方便演示就用控制台程序来演示了,而不用ASP.NET Core),添加两个Package:
Install-Package Microsoft.Extensions.Configuration -Version 2.0.1
Install-Package Microsoft.Extensions.Configuration.Json -Version 2.0.1
添加Json配置文件,读取配置
var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json");var config = builder.Build();//读取配置
Console.WriteLine(config["Alipay:AppId"]);
Console.WriteLine(config["Alipay:PriviteKey"]);
我们的Json文件内容如下:
{"Alipay": {"AppId": "20185555","PriviteKey": "dasfdafafafa"}
}
我们通过ConfigurationBuilder
对象来创建ConfigurationRoot
对象,并用其来读取配置。SetBasePath()
方法是用来设置我们配置对象需要的配置文件的基础路径,比如我们将基础路径设置为C:\ConsoleApp
,那么他读取我们的配置文件appsettings.json
的路径将是C:\ConsoleApp\appsettings.json
运行:
多次调用 AddJsonFile 方法会发生什么
我们新建一个appsettings.Test.json
文件,添加如下内容:
{"Alipay": {"AppId": "20185555Testss","PriviteKey": "dasfdafafafaTestss"}
}
然后修改一下代码:
var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json").AddJsonFile("appsettings.Test.json");
可以看见我们向ConfigurationBuilder
对象设置了两次Json文件,看一下运行效果:
可以得出结论:读取配置的时候会选择最后添加的文件。
那么我们前一个文件去哪了呢?我们的ConfigurationRoot
对象有一个Providers
属性存储了,我们添加的文件信息,我们可以遍历它:
foreach (var provider in config.Providers)
{provider.TryGet("Alipay:AppId", out string val);Console.WriteLine(val);
}
运行:
可以看出我们两个文件的值都被读取到了!
配置重载
我们的配置文件可能会被更改,那么我们如何获取最新的配置?我们在添加文件的时候可以将一个名为reloadOnChange
的参数设置为true,那么当我们的文件发生更改时,就会重新载入配置到内存中来,然后我们获取到的配置就行最新的。我们读取配置的时候并不是每次读取都是从文件里面读取,而是配置文件的所有配置信息都会被加载到内存中来,我们每次从内存读取就行了。
var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json").AddJsonFile("appsettings.Test.json",true,reloadOnChange:true);var config = builder.Build();//读取配置
Console.WriteLine(config["Alipay:AppId"]);
Console.WriteLine(config["Alipay:PriviteKey"]);Console.WriteLine("更改文件之后,按下任意键");
Console.ReadKey();Console.WriteLine("change:");
Console.WriteLine(config["Alipay:AppId"]);
Console.WriteLine(config["Alipay:PriviteKey"]);Console.ReadKey();
我们看一下效果:
今天就到这里了!
Demo:https://github.com/stulzq/BlogDemos/tree/master/ConfigurationTest
.NET Core 配置Configuration杂谈相关推荐
- asp 禁止某一个目录_asp.net core 系列 10 配置configuration (上)
一. ASP.NET Core 中的配置概述 ASP.NET Core 中的应用配置是基于键值对,由configuration 程序提供. configuration 将从各种配置源提供程序操作键值对 ...
- 022_配置configuration
1. 配置(configuration)就是freemarker.template.Configuration对象, 它存储了常用(全局, 应用程序级)的设置, 定义了想要在所有模板中可用的变量(称为 ...
- ASP.NET Core配置Kestrel 网址Urls
ASP.NET Core中如何配置Kestrel Urls呢,大家可能都知道使用UseUrls() 方法来配置. 今天给介绍全面的ASP.NET Core 配置 Urls,使用多种方式配置Urls. ...
- 关于Asp.net core配置信息读取的源码分析梳理
概述 我们都知道asp.net core配置信息的读取离不开IConfigurationSource和IConfigurationProvider这两个类,ConfigurationSource可以提 ...
- ASP.NET Core 配置 - 创建自定义配置提供程序
ASP.NET Core 配置 - 创建自定义配置提供程序 在本文中,我们将创建一个自定义配置提供程序,从数据库读取我们的配置.我们已经了解了默认配置提供程序的工作方式,现在我们将实现我们自己的自定义 ...
- 实现自己的.NET Core配置Provider之Yaml
YAML是一种更适合人阅读的文件格式,很多大型的项目像Ruby on Rails都选择YAML作为配置文件的格式.如果项目的配置很少,用JSON或YAML没有多大差别.看看rails项目中的配置文件, ...
- 实现自己的.NET Core配置Provider之EF
<10分钟就能学会.NET Core配置>里详细介绍了.NET Core配置的用法,另外我还开源了自定义的配置Provider:EF配置Provider和Yaml配置Provider.本文 ...
- 10分钟就能学会的.NET Core配置
.NET Core为我们提供了一套用于配置的API,它为程序提供了运行时从文件.命令行参数.环境变量等读取配置的方法.配置都是键值对的形式,并且支持嵌套,.NET Core还内建了从配置反序列化为PO ...
- 实现.NET Core配置Provider之EF
<10分钟就能学会.NET Core配置>里详细介绍了.NET Core配置的用法另外我还开源了自定义的配置ProviderEF配置Provider和Yaml配置Provider.本文先来 ...
最新文章
- 中科大博士20万字正经论文:教你如何给女朋友送礼物
- PHP GD库---之商详合成分享图片
- UnpooledDirectByteBuf源码分析
- WSS学习(一)---简单部署图
- 期末项目设计图-教务管理系统
- lazada发货_Lazada 怎么发货:Lazada 订单发货流程
- java.sql.SQLException: Value'0000-00-00'异常解决办法
- VS修改生成应用图标
- 拓端tecdat|stata对包含协变量的模型进行缺失值多重插补分析
- 计算机基础应用课件,中职计算机应用基础课件
- 【vue】vue中如何实现SPA 单页面应用_09
- 向日葵服务器维护,向日葵远程服务器
- mysql server 安装教程_MySQL Server 的安装方法及简要步骤
- 太阳直射点纬度计算公式_高中地理——每日一讲(太阳直射点、太阳高度角、极昼、极夜)...
- 银联押宝二维码支付 背后还有一片纷争江湖
- dnf加物理攻击的卡片有哪些_dnf加物理攻击力的宝珠有哪些
- 产品一:葡萄籽的美肌功效
- 关注幼儿教育-儿童木工DIY室、木工坊
- Beep音乐:Only My Railgun
- my ReadSupermarket / micromarket / chaoshi / suguo / supermarket