ASP.NET Core读取配置文件
作者:痴者工良 发布时间:2024-06-05 09:31:52
ASP.NET Core 中,可以使用 ConfigurationBuilder 对象来构建。
主要分为三部:配置数据源 -> ConfigurationBuilder -> 使用。
数据源可来自字典或配置文件。
数据源要么继承 IConfigurationSource ,要么从配置文件中读取。
1,来自字典
我们先使用字典存储键值对,来设置配置, test = 配置
,然后使用 ConfigurationBuilder.Add()
方法添加数据源, Add
方法可以添加继承了 IConfigurationSource
的数据源。
MemoryConfigurationSource
继承了 IConfigurationSource
,使用字典作为数据源。
var dic = new Dictionary<string, string>()
{
["test"] = "配置"
};
var config = new ConfigurationBuilder()
.Add(new MemoryConfigurationSource() { InitialData = dic }).Build();
string test = config["test"];
老是 new 不太爽,可以使用下面的方法来读取字典中的数据源:
var dic = new Dictionary<string, string>()
{
["test"] = "配置"
};
var config = new ConfigurationBuilder()
.AddInMemoryCollection(dic)
.Build();
string test = config["test"];
2,来自配置文件
假如在 项目根目录下创建一个 json 文件,内容如下:
{
"test":"配置"
}
那么可以这样读取配置:
var config = new ConfigurationBuilder()
.AddJsonFile("test.json")
.Build();
string test = config["test"];
Console.WriteLine(test);
如果配置文件不在根目录下,则可以使用 SetBasePath()
来定义路径,示例如下:
var config = new ConfigurationBuilder()
.SetBasePath("E:\\test\\aaa")
.AddJsonFile("test.json")
.Build();
上面看到,获取配置项是非常简单的, config["{KeyName}"]
即可获得 value
。
另外,可以监控 json 文件,当 json 文件发生更改时,主动更新。
config.AddJsonFile("appsettings.json",
optional: true,
reloadOnChange: true);
3,层次结构
配置数据源可以有层次结构。
ASP.NET Core 中,都会有个 appsettings.json 文件,其内容如下:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}
那么我们使用时,可以使用 :
符号获取下一层子项的配置。
var config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
string test = config["Logging:LogLevel:Default"];
如果你只想 获取 json 文件中 LogLevel
部分的配置,可以使用 GetSection()
方法。
var config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build()
.GetSection("Logging:LogLevel");
string test = config["Default"];
通过 json 配置文件,我们可以很方便地构建层级结构的配置,如果想在字典中存储,可以使用 "{k1}:{k2}" 这种形式存。例如:
var dic = new Dictionary<string, string>()
{
["testParent:Child1"] = "6",
["testParent:Child2"] = "666"
};
var config = new ConfigurationBuilder()
.AddInMemoryCollection(dic)
.Build().GetSection("testParent");
string test = config["Child1"];
4,映射
我们可以使用 Get<>()
方法,将配置映射为对象。
public class TestOptions
{
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
}
var dic = new Dictionary<string, string>()
{
["A"] = "6",
["B"] = "66",
["C"] = "666"
};
TestOptions config = new ConfigurationBuilder()
.AddInMemoryCollection(dic)
.Build().Get<TestOptions>();
来源:https://www.cnblogs.com/whuanle/p/13061059.html


猜你喜欢
- XML是一个精简的SGML,它将SGML的丰富功能与HTML的易用性结合到Web的应用中。XML保留了SGML的可扩展功能,这使XML从根本
- 作者:AngelGavin 出处:CSDN一般问题什么是 XML?可扩展标记语言 (XML) 是 Web 上的数据通用语言。它使
- 本文实例讲述了Python实现的计数排序算法。分享给大家供大家参考,具体如下:计数排序是一种非常快捷的稳定性强的排序方法,时间复杂度O(n+
- 本文实例讲述了Python3爬虫学习之爬虫利器Beautiful Soup用法。分享给大家供大家参考,具体如下:爬虫利器Beautiful
- 背景在进行接口自动化测试的时候,对响应结果进行校验,基本上都是对json数据的校验,响应内容十分复杂,当然验证也是一个很庞大的工程 ,不过都
- 有时,优雅的实现是一个函数。不是方法。不是类。不是框架。只是函数。
- 以前没怎么仔细的研究过ajax,只是用到了就直接拿过来用,发现了问题再找解决方法.以下是我在找解决问题的过程中的一点小小的总结. 一.谈Aj
- python-查找特定名称文件并按序号、文件名分行打印输出第1天第2题1.遍历”Day1-homework”目录下文件;2.找到文件名包含“
- eval是Python的一个内置函数,这个函数的作用是,返回传入字符串的表达式的结果。想象一下变量赋值时,将等号右边的表达式写成字符串的格式
- 发现问题在一次捞取Top SQL中,发现DB大量执行 select @@session.tx_read_only ,几乎每一条DML语句前,
- 最近在抓取http://skell.sketchengine.eu网页时,发现用requests无法获得网页的全部内容,所以我就用selen
- 本文实例为大家分享了Python每天迁移MySQL历史数据到历史库的具体代码,供大家参考,具体内容如下#!/usr/bin/env pyth
- 这是一个基于Go语言开发的单点登录系统,实现手机号注册、手机号+验证码登录、手机号+密码登录、账号登出等功能,用户认证采用cookie和jw
- 本文给大家分享的是查看MySQL连接的root密码的方法,下面话不多说来来看正文:1.首先我们进到MySQL的bin目录下➜ cd /usr
- 原文: gradio.app/interface-s…1.全局状态例子来解释import gradio as grsc
- 1、myisamchk 使用 myisamchk 必须暂时停止 MySQL 服务器。例如,我们要检修 discuz 数据库。执行以下操作:
- 微信小程序全称微信公众平台·小程序,原名微信公众平台·应用号(简称微信应用号)声明•微信小程序开发工具类似于一个轻量级的IDE集成开发环境,
- 字典是Python语言中唯一的映射类型。映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的
- 本文实例讲述了PHP实现通过正则表达式替换回调的内容标签。分享给大家供大家参考。具体实现方法如下:function my_wp_plugin
- 1、PyInstaller简介PyInstaller是一个跨平台的Python应用打包工具,支持 Windows/Linux/MacOS三大