申博官网登录入口 当前位置:首页>申博官网登录入口>正文

申博官网登录入口

发布时间:2018-12-10

原标题:.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:ConsoleAppappsettings.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

编辑:通伯卓

发布时间:2018-12-10 09:44:26

当前文章:http://radiokey.biz/play_56901.html

老虎城爱拼购潮越想象 大学周边的老虎机 举报老虎机一次奖百元 老虎机王国娱乐平台 老虎机游戏大全下载 水浒传老虎机pc ag真人娱乐手机版注册 

61571 27961 78090 17781 45422 2418262063 91571 30687

责任编辑:乙北侯伯

随机推荐