.net core 灵活读取配置文件
引用nuget
Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.Binder
Microsoft.Extensions.Configuration.FileExtensions
Microsoft.Extensions.Configuration.EnvironmentVariables
Microsoft.Extensions.Configuration.Json
using Allspark.Core.Common.Json;
using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.IO;
namespace Allspark.Core.Common.Config
{
public static class Configs
{
private const string DefaultConfigName = "appsettings.json";
public class ConfigCache
{
internal static readonly IConfigurationRoot ConfigRoot = null;
static ConfigCache()
{
try
{
string pathToContentRoot = Directory.GetCurrentDirectory();
string configFilePath = Path.Combine(pathToContentRoot, DefaultConfigName);
if (!File.Exists(configFilePath))
{
throw new FileNotFoundException($"{DefaultConfigName}配置文件不存在!");
}
//用于构建基于键/值的配置设置,以便在应用程序中使用
IConfigurationBuilder builder = new ConfigurationBuilder()
.SetBasePath(pathToContentRoot)//将基于文件的提供程序的FileProvider设置为PhysicalFileProvider基本路径
.AddJsonFile(DefaultConfigName, optional: false, reloadOnChange: true)//在构建器的路径中添加JSON配置提供程序
.AddEnvironmentVariables();//添加读取的Microsoft.Extensions.Configuration.IConfigurationProvider来自环境变量的配置值
ConfigRoot = builder.Build();
}
catch (Exception)
{
}
finally
{
}
}
}
/// <summary>
/// 根据名称读取指定配置文件。若无法读取到数据,则使用defaultValue的值
/// </summary>
/// <typeparam name="T">节点的类型,可传对象</typeparam>
/// <param name="name">配置文件节点名</param>
/// <param name="defaultValue">默认值</param>
/// <returns></returns>
public static T Get<T>(string name, T defaultValue)
{
if (ConfigCache.ConfigRoot == null)
{
// throw new NullReferenceException("配置文件加载异常!");
return defaultValue;
}
IConfigurationSection section = ConfigCache.ConfigRoot.GetSection(name);
if (section == null)
{
throw new KeyNotFoundException($"{name}节点不存在!");
}
var config = section.Get<T>();
if (config == null)
return defaultValue;
return config;
}
/// <summary>
/// 根据名称读取指定配置文件
/// </summary>
/// <typeparam name="T">节点的类型,可传对象</typeparam>
/// <param name="name">配置文件节点名</param>
/// <returns></returns>
public static T Get<T>(string name)
{
return Get<T>(name, default);
}
public static string Set<T>(string key, T value)
{
string StrValue = JsonHelper.ObjectToJson(value);
IEnumerable<IConfigurationProvider> configProviders = ConfigCache.ConfigRoot.Providers;
foreach (IConfigurationProvider item in configProviders)
{
if (item.TryGet(key, out string itemValue))
{
item.Set(key, StrValue);
return StrValue;
}
}
return "";
}
}
}
.net core 灵活读取配置文件的更多相关文章
- NET Core开发-读取配置文件Configuration
ASP.NET Core开发-读取配置文件Configuration ASP.NET Core 是如何读取配置文件,今天我们来学习. ASP.NET Core的配置系统已经和之前版本的ASP.NE ...
- ASP.NET Core开发-读取配置文件Configuration
ASP.NET Core 是如何读取配置文件,今天我们来学习. ASP.NET Core的配置系统已经和之前版本的ASP.NET有所不同了,之前是依赖于System.Configuration和XML ...
- ASP.NET Core开发-读取配置文件Configuration appsettings.json
https://www.cnblogs.com/linezero/p/Configuration.html ASP.NET Core 是如何读取配置文件,今天我们来学习. ASP.NET Core的配 ...
- .net core 学习 读取配置文件
在空项目中是没有配置文件的,首先要新建一个,配置文件内容如下,下面来读取各个内容 { "ConnectionStrings": { "DefaultConnection& ...
- .net core自定义读取配置文件
新建完成后项目目录下有个 appsettings.json { "Logging": { "LogLevel": { "Default": ...
- asp.net core mvc 读取配置文件appsettings.json
上一篇我们将了读取自定义配置文件.这篇我们讲一下asp.net core mvc里读取自带的配置文件 appsettings.json 首先创建个asp.net core mvc项目,项目里有Prog ...
- .net core中读取配置文件
1)先看丑陋的方法 读取 appsettings.json 然后在 Startup 的 ConfigureServices() 方法中进行注入: public IConfigurationRoot ...
- .NET平台开源项目速览(20)Newlife.Core中简单灵活的配置文件
记得5年前开始拼命翻读X组件的源码,特别是XCode,但对Newlife.Core 的东西了解很少,最多只是会用用,而且用到的只是九牛一毛.里面好用的东西太多了. 最近一年时间,零零散散又学了很多,也 ...
- 【无私分享:ASP.NET CORE 项目实战(第八章)】读取配置文件(二) 读取自定义配置文件
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 我们在 读取配置文件(一) appsettings.json 中介绍了,如何读取appsettings.json. 但随之产生 ...
随机推荐
- PCB开钢网不容忽视的问题
作为PCB工程师,或许你已经出过很多次的钢网文件,但却不一定了解出钢网有哪些要求. 1.首先我们来看下钢网的实物图,就是一块薄薄的钢板,钢网上有很多焊盘孔.把钢网盖在PCB板上后,这些焊盘孔就会和PC ...
- MySQL存储过程(PROCEDURE)(二)
一.存储过程的修改: 语法: ALTER {PROCEDURE | FUNCTION} sp_name [characteristic……] 参数解释: Sp_name:表示存储过程或函数的名称 ...
- php配置文件参数设置
pm.max_children 设置多大合适? 一.pm.max_children 多大合适? 这个值原则上是越大越好,php-cgi的进程多了就会处理的很快,排队的请求就会很少. 设置”max_ch ...
- 记一次物理机安装centos7.5 出现黑屏的问题
记一次物理机安装centos7.5 出现黑屏的问题 一.问题出现 使用物理机安装centos7.5,选择Install CentOS Linux7之后,并没有出现选择语言的界面,而是只出现了一个鼠标, ...
- BootstrapTable,选中某几行,获取其数据并进行后台处理。以及其他的属性使用。
参考链接:bootstrap Table API 中文版 Bootstrap Table 选中某几行,获取其数据 Ajax传递数组,struts2接收数组 1.首先将复选框搞出来,<table ...
- “浅入浅出”函数防抖(debounce)与节流(throttle)
函数防抖与节流是日常开发中经常用到的技巧,也是前端面试中的常客,但是发现自己工作一年多了,要么直接复用已有的代码或工具,要么抄袭<JS高级程序设计>书中所述"函数节流" ...
- tensorflow用dropout解决over fitting-【老鱼学tensorflow】
在机器学习中可能会存在过拟合的问题,表现为在训练集上表现很好,但在测试集中表现不如训练集中的那么好. 图中黑色曲线是正常模型,绿色曲线就是overfitting模型.尽管绿色曲线很精确的区分了所有的训 ...
- JS的变量的值怎么传递给PHP的变量?
get: <script> name="xxx"; window.location='xxx.php? name='+name; post: <script> ...
- 洛谷 p2678 跳石头 题解
一道裸的二分答案 如果不会分治的去找dalao吧,本蒟蒻只会二分 不知道二分答案的看这里 这位dalao解释的很详细其实只是随便找了一个 那里面貌似也有这个题的题解,但我还是要写(才不是应付老师) 关 ...
- 把我坑惨的一个update语句
最近好几次有开发同学在问我,比如下图: 问题归纳起来就是:在MySQL里面update一条记录,语法都正确的,但记录并没有被更新... 刚遇到这个问题的时候,我拿到这条语句直接在测试库里面执行了一把, ...