.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="sections"></param>
/// <returns></returns>
public static string GetValue(params string[] sections)
{
try
{
if (sections.Any())
return Configuration[string.Join(":", sections)];
}
catch (Exception)
{ }
return "";
}
/// <summary>
/// 递归获取配置信息数组
///引用 Microsoft.Extensions.Configuration.Binder 包
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sections"></param>
/// <returns></returns>
public static List<T> App<T>(params string[] sections)
{
List<T> list = new List<T>();
Configuration.Bind(string.Join(":", sections), list);
return list;
}
}
ConfigureServices中配置
services.AddSingleton(new AppSettings(Configuration));
获取指定配置
var info = AppSettings.GetValue("Logging", "LogLevel");
微信公众号【鹏祥】

.Net之配置文件自定义的更多相关文章
- 0404-服务注册与发现-客户端负载均衡-两种自定义方式-Ribbon通过代码自定义配置、使用配置文件自定义Ribbon Client
一.官方文档解读 官方地址:https://cloud.spring.io/spring-cloud-static/Edgware.SR3/single/spring-cloud.html#_cust ...
- 使用配置文件自定义Ribbon配置
1.application.yml——Ribbon配置文件 debug: false spring: application: name: mcc-ribbon-properties cloud: c ...
- VS web.config/app.conifg配置文件自定义类型使用智能感知功能
大家使用VS编辑web.config或app.config时可以使用智能感知功能的,像下面这样很是方便 当然如果是我们自定义的类型也是可以使用智能感知的,因为智能感知的内容是来自你或其他公司(MS)提 ...
- spring cloud中通过配置文件自定义Ribbon负载均衡策略
一.Ribbon中的负载均衡策略 1.Ribbon中支持的负载均衡策略 AvailabilityFilteringRule:过滤掉那些因为一直连接失败的被标记为circuit tripped的后端se ...
- laravel配置文件(自定义配置文件)
laravel配置文件存放目录config里面的文件是自定加载的,也就是说,你在文件夹里面新建一个custom.php,按配置格式写,是可以正常访问的. 1.读取配置的方法: $value = con ...
- C# config配置文件 自定义节点读取
主要使用:ConfigurationSection IConfigurationSectionHandler已被否决 http://technet.microsoft.com/zh-cn/librar ...
- App.config和Web.config配置文件的自定义配置节点
前言 昨天修改代码发现了一个问题,由于自己要在WCF服务接口中添加了一个方法,那么在相应调用的地方进行更新服务就可以了,不料意外发生了,竟然无法更新.左查右查终于发现了问题.App.config配置文 ...
- Spring 源码(4)在Spring配置文件中自定义标签如何实现?
Spring 配置文件自定义标签的前置条件 在上一篇文章https://www.cnblogs.com/redwinter/p/16165274.html Spring BeanFactory的创建过 ...
- struts2自定义拦截器与cookie整合实现用户免重复登入
目的:测试开发时,为了减少用户登入这个繁琐的登入验证,就用struts2做了个简单的struts2拦截器,涉及到了与cookie整合,具体的看代码 结构(两部份)=struts2.xml+自定义拦截器 ...
- 每天学点SpringCloud(三):自定义Eureka集群负载均衡策略
相信看了 每天学点SpringCloud(一):简单服务提供者消费者调用,每天学点SpringCloud(二):服务注册与发现Eureka这两篇的同学都了解到了我的套路,没错,本篇博客同样是为了解决上 ...
随机推荐
- 小程序跳转到h5页面无法获取参数
在小程序中,遇见这样一个需求: 小程序(携带token)跳转到H5页面: 在H5端取token;将token作为参数: 然后返回来的信息, 这里遇见一个问题,在created中无法获取地址栏的参数: ...
- Gin 路由注册与请求参数获取
目录 一.Web应用开发的两种模式 1.前后端不分离模式 2.前后端分离模式 二.RESTful介绍 三.API接口 3.1 RESTful API设计指南 3.2 API与用户的通信协议 3.3 R ...
- 用Unity3D做游戏开发在Android上的常用调试方法
Hdg Remote Debug 远程调试 游戏运行在手机上,可以通过pc端的unity来随时修改当前场景中GameObject的变量,从而改变手机上运行时的表现.比如,我可以勾掉下图中的" ...
- Midjourney|文心一格 Prompt:完整参数列表、风格汇总、文生图词典合集
Midjourney|文心一格 Prompt:完整参数列表.风格汇总.文生图词典合集 1.Midjourney 完整参数列表 参数名称 调用方法 使用案例 注意事项 V5 V4 V3 niji 版本 ...
- 【Java】Java版本升级,找不到符号 问题处理
哈喽,各位早上/中午/晚上好呀! JDK21出了也有一段时间了,有的小伙伴也按捺不住开始将项目升级到JDK21了吧. 既然升级,大概多多少少都会遇到"找不到符号"的问题,英文原文是 ...
- 使用easyexcel导入62个字段,十万加行数的excel
使用easyexcel导入62个字段,十万加行数的excel 1️⃣ 准备工作 1. 版本对应 在easyexcel官网的常见问题栏中往下滑找到 2. 下载jar包 maven项目不想多说,在pom. ...
- javascript按钮通过cookie限制60s后才可以点击
javascript按钮通过cookie限制60s后才可以点击 1️⃣ 首先创建一个html页面,放入一个按钮 2️⃣ 设置点击按钮的触发函数 一般当点击按钮都会有一些业务需要,在需求结束后,触发sa ...
- Acwing 800.数组元素的目标和,双指针初步
Acwing 800.数组元素的目标和 给定升序的有序数组A(长度为n),B(长度为m)以及目标值x,求出满足\(A[i] + B[j] = x\)的数对\((i,j)\),题目保证仅有 唯一解 输入 ...
- JS leetcode 买卖股票的最佳时机 题解分析,我离职了。
壹 ❀ 引 昨天下班后,还是找经理提出了辞职,没有犹豫的裸辞,今天与人事的对话不小心被后台的同事听到,一下在公司传开了,下午我与同事们多人对线,被他们的消息轰炸....没错,我真的要走了. 因为什么原 ...
- NC235247 Sramoc问题
题目链接 题目 题目描述 \(Sramoc(K ,M)\) 表示用数字 \(0,1,2,3,4,...,k-1\) 组成的自然数中能被M整除的最小数.给定 \(K,M\) \(2\leq K\leq ...