2.5配置的框架浅析「深入浅出ASP.NET Core系列」
希望给你3-5分钟的碎片化学习,可能是坐地铁、等公交,积少成多,水滴石穿,谢谢关注。
配置的使用流程
//第一步.初始化Builder var builder = new ConfigurationBuilder(); //第二步.将Source添加到Builder builder.AddJsonFile("student.json", false, true); //builder.AddInMemoryCollection(dict) //builder.AddXmlFile("/path/tmp.xml") //第三步.调用Build var configuration = builder.Build(); //第四步.使用 configurationRoot["key"]
第二步,在将Source添加到Builder的时候,内部做了哪些事情呢?
初始化对应的Source对象,比如Json文件配置源对象:
JsonConfigurationSource sr=new JsonConfigurationSource() { Path = "settings.json", }
第三步,Build时候在内部,生成Provider对象,一个Source对应一个Provider,最后返回ConfigurationRoot,该Root包含所有的Provider。
foreach(var source in sources) { var provider = source.Build(); providers.add(provider); } return new ConfigurationRoot(providers);
第四步,在使用的时候,通过Provider去找到相应的key,返回key值。
foreach(var provider in providers.Reverse()) { string value; provider.TryGet(key,out value); return value; }
通过以上步骤,我们可以看到配置Source和配置Provider是关键的两个要点。
内部类关系图
如果所示,如果要自己定义配置,必须实现接口IConfigurationSource,并在内部实现一个对应的Provider,该Provider必须继承ConfigurationProvider抽象类,并在Provider读取配置,对配置进行维护、同步、热更新。具体如何定制,在后续进阶和高级进行讲解。
我是.NET架构师张飞洪,入行10年有余,人不堪其忧,吾不改其乐,谢谢您关注我的头条号。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
2.4配置的热更新「深入浅出ASP.NET Core系列」
希望给你3-5分钟的碎片化学习,可能是坐地铁、等公交,积少成多,水滴石穿,谢谢关注。 大家知道通常我们修改网站的配置文件比如,webconfig的时候,网站需要重启才能读取到最新的修改,所谓热更新就是网站无需重启,修改完配置文件,直接F5就可以看到效果如下图所示: 修改IOption为IOptionsSnapshot 上一节当中我们使用IOption来作为注入,这次我们改成IOptionSnapshot,注意如果我们是在Controller里也是一样的,见下图 修改为IOptionsSnapshot后,即可达到热更新,非常简单。 内部机制 我们来看下ASP.NET Core内部是如何做到的? 如上图所示,我们增加了一行代码: builder.AddJsonFile("appsettings.json", false, true); 这里我们重写并覆盖了WebHost内部的CreateDefaultBuilder方法,并且设置了两个bool型参数,其实我们也可以不做重写,也就是上面的代码注释掉 一样能达到热更新的目的。 那么,到底WebHost这个静态方法内部做了哪些工作,我们...
- 下一篇
1.6部署到CentOS「深入浅出ASP.NET Core系列」
希望给你3-5分钟的碎片化学习,可能是坐地铁、等公交,积少成多,水滴石穿,谢谢关注。 安装.NET Core 官方安装地址: https://www.microsoft.com/net/learn/dotnet/hello-world-tutorial?initial-os=linux 安装完后测试一下版本 测试一个webapi dotnet new webapi dotnet run 默认是在5000端口,虚拟机该端口还没打开,这个时候在虚拟机外面是无法访问的 再开一个终端使用curl访问 返回values数组,大功告成。 部署到CentOS 发布 使用vs2017发布一个mvc项目到本地文件夹 拷贝文件 使用fileZilla来拷贝到/home/netcore目录 启动站点:dotnet run hellworld.dll Nngix配置 端口映射 接下来就是映射5000端口到80端口,我们进入nginx配置目录 vi nginx.conf include会把所有*.conf的文件都引入进来,所有我们单独建一个netcore.conf 进入netcore.conf 在netco...
相关文章
文章评论
共有0条评论来说两句吧...