前言

.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杂谈相关推荐

  1. asp 禁止某一个目录_asp.net core 系列 10 配置configuration (上)

    一. ASP.NET Core 中的配置概述 ASP.NET Core 中的应用配置是基于键值对,由configuration 程序提供. configuration 将从各种配置源提供程序操作键值对 ...

  2. 022_配置configuration

    1. 配置(configuration)就是freemarker.template.Configuration对象, 它存储了常用(全局, 应用程序级)的设置, 定义了想要在所有模板中可用的变量(称为 ...

  3. ASP.NET Core配置Kestrel 网址Urls

    ASP.NET Core中如何配置Kestrel Urls呢,大家可能都知道使用UseUrls() 方法来配置. 今天给介绍全面的ASP.NET Core 配置 Urls,使用多种方式配置Urls. ...

  4. 关于Asp.net core配置信息读取的源码分析梳理

    概述 我们都知道asp.net core配置信息的读取离不开IConfigurationSource和IConfigurationProvider这两个类,ConfigurationSource可以提 ...

  5. ASP.NET Core 配置 - 创建自定义配置提供程序

    ASP.NET Core 配置 - 创建自定义配置提供程序 在本文中,我们将创建一个自定义配置提供程序,从数据库读取我们的配置.我们已经了解了默认配置提供程序的工作方式,现在我们将实现我们自己的自定义 ...

  6. 实现自己的.NET Core配置Provider之Yaml

    YAML是一种更适合人阅读的文件格式,很多大型的项目像Ruby on Rails都选择YAML作为配置文件的格式.如果项目的配置很少,用JSON或YAML没有多大差别.看看rails项目中的配置文件, ...

  7. 实现自己的.NET Core配置Provider之EF

    <10分钟就能学会.NET Core配置>里详细介绍了.NET Core配置的用法,另外我还开源了自定义的配置Provider:EF配置Provider和Yaml配置Provider.本文 ...

  8. 10分钟就能学会的.NET Core配置

    .NET Core为我们提供了一套用于配置的API,它为程序提供了运行时从文件.命令行参数.环境变量等读取配置的方法.配置都是键值对的形式,并且支持嵌套,.NET Core还内建了从配置反序列化为PO ...

  9. 实现.NET Core配置Provider之EF

    <10分钟就能学会.NET Core配置>里详细介绍了.NET Core配置的用法另外我还开源了自定义的配置ProviderEF配置Provider和Yaml配置Provider.本文先来 ...

最新文章

  1. 中科大博士20万字正经论文:教你如何给女朋友送礼物
  2. PHP GD库---之商详合成分享图片
  3. UnpooledDirectByteBuf源码分析
  4. WSS学习(一)---简单部署图
  5. 期末项目设计图-教务管理系统
  6. lazada发货_Lazada 怎么发货:Lazada 订单发货流程
  7. java.sql.SQLException: Value'0000-00-00'异常解决办法
  8. VS修改生成应用图标
  9. 拓端tecdat|stata对包含协变量的模型进行缺失值多重插补分析
  10. 计算机基础应用课件,中职计算机应用基础课件
  11. 【vue】vue中如何实现SPA 单页面应用_09
  12. 向日葵服务器维护,向日葵远程服务器
  13. mysql server 安装教程_MySQL Server 的安装方法及简要步骤
  14. 太阳直射点纬度计算公式_高中地理——每日一讲(太阳直射点、太阳高度角、极昼、极夜)...
  15. 银联押宝二维码支付 背后还有一片纷争江湖
  16. dnf加物理攻击的卡片有哪些_dnf加物理攻击力的宝珠有哪些
  17. 产品一:葡萄籽的美肌功效
  18. 关注幼儿教育-儿童木工DIY室、木工坊
  19. Beep音乐:Only My Railgun
  20. my ReadSupermarket / micromarket / chaoshi / suguo / supermarket

热门文章

  1. c语言作业算术表达式求值,算术表达式求值演示(C语言版)
  2. php 数组去重_数组去重(JavaScript 为例)
  3. git 可视化工具_最值得推荐的8个git/github项目数据分析工具
  4. python打包的exe如何免杀_通过Python实现Payload分离免杀过程详解
  5. 高难度的c语言程序例子,高难度脑筋急转弯分享
  6. 日常make 的小技巧
  7. FPGA逻辑设计回顾(12)RAM以及ROM的RTL设计及其验证
  8. JavaScript的使用
  9. 我对变量产生了这些想法
  10. 【练习】OC语法的简单复习