前文讲获取配置文件内容的时候,是获取默认的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");

.Net之配置文件自定义相关推荐

  1. spring cloud中通过配置文件自定义Ribbon负载均衡策略

    2019独角兽企业重金招聘Python工程师标准>>> spring cloud中通过配置文件自定义Ribbon负载均衡策略 博客分类: 微服务 一.Ribbon中的负载均衡策略 1 ...

  2. 白话Elasticsearch29-IK中文分词之IK分词器配置文件+自定义词库

    文章目录 概述 ik配置文件 IK自定义词库 自定义词库 Step1 : 新建自定义分词库 Step2 : 添加到ik的配置文件中 Step3 :重启es ,查看分词 自定义停用词库 Step1 : ...

  3. Spring Cloud【Finchley】-05使用配置文件自定义Ribbon Client

    文章目录 概述 示例 新建子模块 子模块加入依赖 配置文件增加配置 验证 源码 概述 Finchley.SR2版本的官方文档: https://cloud.spring.io/spring-cloud ...

  4. Ribbon-3使用配置文件自定义Ribbon Client

    我们讨论一下怎么使用配置文件,这是从SpringCloud Netflix1.0开始的,6.4 Customizing the Ribbon Client by Setting Propertiesh ...

  5. spring boot配置文件自定义加密配置

    公司漏洞检测,检测到 线上的jar包中配置文件里面数据库密码 ,redis密码等等配置都是明文,所以需要在配置文件中加密.所以为了实现该功能直接贴代码 贴一下原作者的git(原文章忘记在哪里了),感谢 ...

  6. 读取文档时出现问题129_springboot读取配置文件的自定义内容时出现中文乱码

    学习springboot时读取配置文件自定义内容出现中文乱码总结. 方法一: Windowd→Preferences→General→Editors→Text Editors→Spelling里面的E ...

  7. 搜狗输入法--自定义短语配置文件

    ; 搜狗输入法--自定义短语配置文件; 自定义短语说明: ; 1.自定义短语支持多行.空格.指定位置. ; 2.每条自定义短语最多支持30000个汉字,总共支持100000条自定义短语. ; 3.自定 ...

  8. 用户配置 计算机配置文件,使用 CopyProfile 自定义默认用户配置文件

    使用 CopyProfile 自定义默认用户配置文件 01/17/2020 本文内容 Windows 使用默认用户配置文件作为模板,将配置文件分配给每个新用户. 通过自定义默认用户配置文件,可以配置在 ...

  9. 利用snmptools实现cacti自定义监控Windows性能计数器

    snmptools基本的实现思路很简单,性能计数器->SNMP->cacti,第一步是计数器到SNMP,第二步是SNMP到cacti. 第一步计数器到SNMP,snmptools提供了一个 ...

最新文章

  1. 【C++基础学习】C++中的引用
  2. ASP.NET MVC (四、ASP.NET Web API应用程序与跨域操作)
  3. 你有见过从肚子里抽出来的脂肪吗? | 今日趣图
  4. 交换机和路由器的区别是什么?
  5. python执行文件函数,python如何运行函数
  6. 【转载】 Asp.net Mvc 3当然也不会例
  7. C语言程序设计基础之结构
  8. WIndows thinpc 精简版的WIN7
  9. 深入浅出设计模式——解释器模式(Interpreter Pattern)
  10. asp.net GridView手写事件,包括取主键、取值、更新、选择、删除
  11. 了解一个百万级 PHP 网站的架构
  12. 1414 冰雕(思维+暴力)
  13. C# dataGridView控件 控件中至少有一列没有模板问题【解决】 添加新列
  14. Mac 利用 Chrome 下载所有网页上的视频
  15. 中国移动的新自由主义精神
  16. 思科交换机的基础操作命令有这些!
  17. SAP各种BOM详解(包含常用BAPI)
  18. 企业运维之七层负载均衡--Haproxy
  19. 股票挂钩产品的设计、定价和避险原理
  20. 【归档】设U是V的子空间,求U + U

热门文章

  1. 一个漫长的程序人生路程,如何突破5000元大关?几年前的2-3线城市的参考,现在未必...
  2. lighttpd安装配置支持php
  3. emwin之错误使用控件函数导致死机现象
  4. zbb20180710 maven Failed to read artifact descriptor--maven
  5. 2、Saltstack的数据系统
  6. Hbase笔记4 java操作Hbase
  7. BFS HDOJ 2102 A计划
  8. java里面的文件上传与下载
  9. ArrayList 的实现原理
  10. Nodejs Guides(四)