.Net之配置文件自定义

前文讲获取配置文件内容的时候,是获取默认的appsettings.json配置文件的配置,下面说明下如何进行自定义配置文件获取

1. Json Provider

1.1 构建独立的IConfiguration

编写方法

        public static IConfigurationRoot LoadSettings(this IHostEnvironment env){return new ConfigurationBuilder().SetBasePath(AppDomain.CurrentDomain.BaseDirectory).AddJsonFile("common.json", optional: true, reloadOnChange: false).AddJsonFile("appsettings.json", optional: true, reloadOnChange: false).AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: false).AddEnvironmentVariables().Build();}

在Startup构造函数的时候进行赋值替换IConfiguration

        private readonly IConfiguration _configuration;public Startup(IWebHostEnvironment env){_configuration = env.LoadSettings();}

该操作添加的配置项,只在startup范围生效。

1.2 在Progrom全局自定义配置

 public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureAppConfiguration((hostingContext, config) =>{var env = hostingContext.HostingEnvironment;config.SetBasePath(env.ContentRootPath);config.AddJsonFile("devappsettings.json", optional: false, reloadOnChange: true);}).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>();});

注意:添加自定义文件的目录要注意,可能会存在因为目录问题所以找不到配置文件的情况。

2. Memory Provider

允许我们将一个应用程序配置直接配置到内存中,而不是像传统方式那样子必须制定一个物理文件。

            var builder = new ConfigurationBuilder();var profileCollection = new Dictionary<string, string>{{"AuthorProfile:FirstName", "Joydip"},{"AuthorProfile:LastName", "Kanjilal"},{"AuthorProfile:Address", "Hyderabad, India"}};builder.AddInMemoryCollection(profileCollection);Configuration = builder.Build();

使用

        public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureAppConfiguration((hostingContext, config) =>{var builder = new ConfigurationBuilder();var profileCollection = new Dictionary<string, string>{{"AuthorProfile:FirstName", "Joydip"},{"AuthorProfile:LastName", "Kanjilal"},{"AuthorProfile:Address", "Hyderabad, India"}};builder.AddInMemoryCollection(profileCollection);config.AddConfiguration(builder.Build());}).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>();});

然后就可以通过IConfiguration实例去获取了。

3. 公共类获取配置文件

引用组件

Microsoft.Extensions.Configuration.Json

    public class AppSettings{private static IConfiguration Configuration { get; set; }public AppSettings(IConfiguration configuration){Configuration = configuration;}/// <summary>/// 封装要操作的字符/// </summary>/// <param name="ps"></param>/// <returns></returns>public static string GetValue(params string[] ps){try{if (ps.Any())return Configuration[string.Join(":", ps)];}catch (Exception){ }return "";}/// <summary>/// 递归获取配置信息数组///引用 Microsoft.Extensions.Configuration.Binder 包/// </summary>/// <typeparam name="T"></typeparam>/// <param name="ps"></param>/// <returns></returns>public static List<T> App<T>(params string[] ps){List<T> list = new List<T>();Configuration.Bind(string.Join(":", ps), list);return list;}}

参考自:https://gitee.com/laozhangIsPhi/Blog.Core

ConfigureServices中配置

services.AddSingleton(new AppSettings(Configuration));

获取指定配置

var info = AppSettings.GetValue("Logging", "LogLevel");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c# 读取大文件方法

/// <summary>/// 读取大文件方法/// </summary>/// <param name"initialPath">原文件绝对地址</param>/// <param name"aimPath">新文件绝对地址</param>private static void CopyFile(string initialPath, string a…

快速修改HTML5,HTML5无刷新修改URL(示例代码)

HTML5新添加了两个api分别是pushState和replaceState&#xff0c;DOM中的window对象通过window.history方法提供了对浏览器历史记录的读取&#xff0c;可以在用户的访问记录中前进和后退&#xff0c;我们可以开始操作这个历史记录堆栈。实例一、通过pushState修改URL通过这句代…

这一平台只要把握住风口期,自己就能当老板!

我是电商珠珠 短视频渐渐走进大家的视野&#xff0c;改变了大家的日常娱乐方式。从19年开始&#xff0c;抖音开始发展电商平台-抖音小店。 在改变大家娱乐方式的同时&#xff0c;还将直播电商的热度掀了起来&#xff0c;由此改变了大家的购物方式&#xff0c;给大家带来了方便…

如何用TensorFlow实现人工智能?

自 2015 年 11 月 9 号发布之后&#xff0c;TensorFlow 逐渐成为人工智能领域最广泛运用的深度学习框架。那么TensorFlow框架到底是什么&#xff1f;TensorFlow 是一个大规模机器学习的开源框架&#xff0c;提供了多种深度神经网络的支持。不仅 Google 在自己的产品线使用 Tens…

一不小心,知乎炸了!

阅读本文大概需要7分钟。昨天晚上加完班发完原创文章&#xff1a;如何成为一个搞垮公司的程序员&#xff1f;就准备回家了&#xff0c;突然发现知乎一堆咨询消息&#xff0c;看了看原来是之前回答的一个问题突然火了&#xff0c;就是这个&#xff1a;好家伙&#xff0c;一天不到…

[转载]Android Layout标签之-viewStub,requestFocus,merge,include

定义Android Layout(XML)时&#xff0c;有四个比较特别的标签是非常重要的&#xff0c;其中有三个是与资源复用有关&#xff0c;分别是<viewStub/>, <requestFocus />, <merge /> and<include />。可是以往我们所接触的案例或者官方文档的例子都没有着…

查询2021抚顺高考成绩,2021年抚顺高考状元是谁分数多少分,历年抚顺高考状元名单...

2020年抚顺一年一度的高考考试已经结束&#xff0c;今年抚顺高考状元是谁呢&#xff0c;抚顺高考状元出自哪个高中学校&#xff0c;文理科分数是多少分&#xff0c;一起来了解。一、2020年抚顺高考状元名单资料2020年抚顺高考状元名单和学校相关信息&#xff0c;截至目前发文时…

面试的一点心得

下班路上&#xff0c;一个武汉的朋友发我一份简历&#xff0c;问这个简历值多少。打开简历&#xff0c;九年工作经验&#xff0c;但只有两个项目经验&#xff0c;看着没啥亮点&#xff0c;建议他根据面试情况综合考虑。正好趁机分享一点自己的面试心得。1、编码能力这是做技术最…

Android菜单详解——理解android中的Menu

前言 今天看了pro android 3中menu这一章&#xff0c;对Android的整个menu体系有了进一步的了解&#xff0c;故整理下笔记与大家分享。 PS&#xff1a;强烈推荐《Pro Android 3》&#xff0c;是我至今为止看到的最好的一本android书&#xff0c;中文版出到《精通Android 2》。 …

2021北京高考适应性测试成绩排名查询,2021届适应性考试学生成绩排名

1开启前照灯远光时仪表板上(如图所示)亮起。查看本题分析2在道路上跟车行驶时&#xff0c;跟车距离不是主要的&#xff0c;只须保持与前车相等的速度&#xff0c;即可防止发生追尾事故。查看本题分析3驾驶机动车在高速公路要按照限速标志标明的车速行驶。查看本题分析4这个标志…

.NET之Docker部署详细流程

开篇语自己从头开始走一遍docker部署.net的流程&#xff0c;作为一种学习总结&#xff0c;以及后续会写一些在该基础之上的文章。本次示例环境&#xff1a;vs2019、net5、docker、postman创建项目本次事例代码是用过vs2019创建的ASP.NET Core Web API项目image.png目标框架是.N…

平凡而又神奇的贝叶斯方法

全世界有3.14 % 的人已经关注了数据与算法之美概率论只不过是把常识用数学公式表达了出来。 ——拉普拉斯记得读本科的时候&#xff0c;最喜欢到城里的计算机书店里面去闲逛&#xff0c;一逛就是好几个小时&#xff1b;有一次&#xff0c;在书店看到一本…

python变量名称跟着循环,在Python中使用列表中的名称循环创建新变量

How to create new variables with names from list?This:name [mike, john, steve]age [20, 32, 19]index 0for e in name:name[index] age[index]index index1of course does not work. What should I do?I want to do this:print mike>>> 20print steve>…

常用Jsp命令

编译器指示&#xff1a;<% 编译器指示 %> 声明变量&#xff1a;<%! 声明 %> 表达式&#xff0c;调用变量&#xff1a;<% 表达式 %> 程序代码段/小型指令&#xff08;写程序段&#xff09;&#xff1a;<% 程序代码片段 %> 注释: 第一种&#…

d.ts文件可以注释html吗,如何编写一个d.ts文件的步骤详解_旧店_前端开发者

前言本文主要讲怎么写一个typescript的描述文件(以d.ts结尾的文件名&#xff0c;比如xxx.d.ts)。最近开始从之前也从网上面也找了一些资料&#xff0c;但还是看的云里雾里模糊不清&#xff0c;经过一段摸索&#xff0c;将摸索的结果记录下来&#xff0c;也希望可以给别人一个参…

function里面可以写function吗_氨基酸可以和蜂蜜一起喝吗?蜂蜜里面有氨基酸吗?...

氨基酸可以和蜂蜜一起喝吗?蜂蜜里面有氨基酸吗?氨基酸是我们人体不可或缺的营养物质&#xff0c;那氨基酸这种物质是否可以搭配蜂蜜一同食用?不少朋友都存在类似的疑惑&#xff0c;氨基酸会对蜂蜜产生不良的影响吗?其实&#xff0c;蜂蜜中本身也包含不少的氨基酸&#xff0…

通过Dapr实现一个简单的基于.net的微服务电商系统(九)——一步一步教你如何撸Dapr之OAuth2授权-百度版...

目录&#xff1a;一、通过Dapr实现一个简单的基于.net的微服务电商系统二、通过Dapr实现一个简单的基于.net的微服务电商系统(二)——通讯框架讲解三、通过Dapr实现一个简单的基于.net的微服务电商系统(三)——一步一步教你如何撸Dapr四、通过Dapr实现一个简单的基于.net的微服…

各自用一句话来概括MVC、MVP、MVVM的差异特点

MVC&#xff1a; 用户的请求首先会到达Controller&#xff0c;由Controller从Model获取数据&#xff0c;选择合适的View&#xff0c;把处理结果呈现到View上&#xff1b; MVP&#xff1a; 用户的请求首先会到达View&#xff0c;View传递请求到特定的Presenter&#xff0c;Pre…

不用“背”单词,1个方法牢记7000单词:我是如何做到的?

全世界有3.14 % 的人已经关注了数据与算法之美上个月30号&#xff0c;我怀着忐忑的心情&#xff0c;再次打开了 词汇量测试网站。当我看到词汇量达到7190的时候&#xff0c;非常兴奋。以至于带着怀疑的态度测了第二次&#xff1a;7260。7000的词汇量是怎样的一个程度呢&#xf…

bios是固定在微型计算机上的一块RoM,计算机硬件笔试试题

1、通常说一款CPU的型号是"奔腾4_2、8GHz"&#xff0c;其中&#xff0c;"2、8GHz"是指CPU的哪项参数(C )。A、外频B、速度C、主频D、缓存2、在以下存储设备中&#xff0c;(D )存取速度最快。A、硬盘B、寄存器C、内存D、CPU缓存3、一条标有PC2700 的DDR 内存…