ASP.NET Core 中提供了一个Configuration 包,用以应用配置基于配置提供程序建立的键值对。这里以json文件配置的方式,简单的介绍一下它的用法。

首先定义一个配置文件appsettings.json:

{
    "key1": "value1",
    "key2": -1,
        "subsection":  {
            "key1": "value2",
            "key2": -5
    }
}

如下是基本的用法:

var configBuilder = new ConfigurationBuilder().AddJsonFile("appsettings.json");
var config = configBuilder.Build(); var value1 = config.GetValue<string>("key1");
var value2 = config.GetValue<int>("key2");

.net core将配置操作分布在ConfigurationBuilder和IConfigurationRoot两个对象了,其中ConfigurationBuilder用来配置数据源,IConfigurationRoot则提供统一的读取操作。

数据源:

配置提供程序将配置数据从各种配置源读取到键值对,它支持的配置方式比较多,常见的就有:

  • 命令行参数
  • 环境变量
  • 内存中的 .NET 对象
  • 设置文件(Ini、 xm、,Json)
  • 自定义提供程序

基本上常用的配置数据源都支持了,支持多数据源配置,也支持自定义数据源,非常灵活而方便。具体的配置方式可以参考官方文档ASP.NET Core 中的配置

CreateDefaultBuilder

为了简化配置,Asp.net core中提供了一个函数CreateDefaultBuilder隐式提供了对ConfigurationBuilder的调用,顺序提供了对如下配置文件的配置加载:

  • appsettings.json。
  • appsettings.{Environment}.json。
  • 应用在使用入口程序集的 Development 环境中运行时的机密管理器。
  • 环境变量。
  • 命令行参数

更多细节可以参考官方文档:设置主机

读取配置

前面的例子中演示了基本的读取方式:

var value1 = config.GetValue<string>("key1");
var value2 = config.GetValue<int>("key2");

除了这种方式外,也可以通过Bind方法按照对象的方式读取:

class ConfigData
{
public string Key1 { get; set; }
public int Key2 { get; set; }
} var cfgData = new ConfigData();
config.Bind(cfgData);

另外,对于子节点的配置,也可以通过GetSection函数定位到子节点,然后按照前面的方式读取,例如:

var value1 = config.GetSection("subsection").GetValue<string>("key1");
var cfgData = config.GetSection("subsection").Get<ConfigData>();

参考文章

ASP.NET Core 中的配置

.Net core下的配置设置(一)——Configuration的更多相关文章

  1. .Net core下的配置设置(二)——Option

    我在前面的文章.Net core下的配置设置(一)——Configuration中介绍了.net core下配置文件的读取方法,在.net core中,直接从Configuration对象中读取的并不 ...

  2. (11)ASP.NET Core 中的配置一(Configuration)

    1.前言 ASP.NET Core在应用程序上引入Microsoft.Extensions.Configuration配置,可以支持多种方式配置,包括命令行配置.环境变量配置.文件配置.内存配置,自定 ...

  3. (12)ASP.NET Core 中的配置二(Configuration)

    1.内存配置 MemoryConfigurationProvider使用内存中集合作为配置键值对.若要激活内存中集合配置,请在ConfigurationBuilder的实例上调用AddInMemory ...

  4. 七、.net core下配置、数据库访问等操作实现

    配置读取 .net core下读取配置还是有点麻烦的,本身没有System.Configuration.dll,所以在进行配置前需要自行引用Microsoft.Extensions.Configura ...

  5. 聊聊ASP.NET Core中的配置

    ​作为软件开发人员,我们当然喜欢一些可配置选项,尤其是当它允许我们改变应用程序的行为而无需修改或编译我们的应用程序时.无论你是使用新的还是旧的.NET时,可能希望利用json文件的配置.在这篇文章中, ...

  6. asp.net core 系列 10 配置configuration (上)

    一.  ASP.NET Core 中的配置概述 ASP.NET Core 中的应用配置是基于键值对,由configuration 程序提供. configuration  将从各种配置源提供程序操作键 ...

  7. 翻译 - ASP.NET Core 基本知识 - 配置(Configuration)

    翻译自 https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-5.0 ASP ...

  8. 微软Azure配置中心 App Configuration (一):轻松集成到Asp.Net Core

    写在前面 在日常开发中,我这边比较熟悉的配置中心有,携程Apollo,阿里Nacos(配置中心,服务治理一体) 之前文章: Asp.Net Core与携程阿波罗(Apollo)的第一次亲密接触 总体来 ...

  9. 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获

    项目开发中的一些注意事项以及技巧总结   1.jquery采用ajax向后端请求时,MVC框架并不能返回View的数据,也就是一般我们使用View().PartialView()等,只能返回json以 ...

随机推荐

  1. 从源码开始运行Bitcoin Core

    安装Ubuntu 环境:虚拟机 网络连接:桥接 系统版本:16.04 源:ali 安装编译环境(依赖库) sudo apt-get update sudo apt-get install build- ...

  2. zabbix通过自动发现tomcat应用端口监控连接数

    192.168.10.98上 netstat -anp | wc -l netstat -anp|grep 8094 | grep ESTABLISHED | wc -l netstat -anp|g ...

  3. Flask Web中用MySQL代替SQLite

    由于.sqlite文件操作的诸多不便,决定常识用MySQL代替书上的SQLite作为数据库. 1.在虚拟环境中安装mysql-Python具体步骤为: <1> 安装python-dev s ...

  4. mysql特殊使用

    1.按照 job 和薪水倒序排序: select ename,job,sal from emp order by job desc,sal desc; 2.substr()截取子串 该函数接收3个参数 ...

  5. 高性能之css

    避免使用@import 有两种方式加载样式文件,一种是link元素,另一种是CSS 2.1加入@import.而在外部的CSS文件中使用@import会使得页面在加载时增加额外的延迟.虽然规则允许在样 ...

  6. BZOJ3052/UOJ#58 [wc2013]糖果公园 莫队 带修莫队 树上莫队

    原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ3052.html 题目传送门 - BZOJ3052 题目传送门 - UOJ#58 题意 给定一棵树,有 ...

  7. P1057 传球游戏 dp

    题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:nn个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个 ...

  8. 039 在weblogic下部署jndi的多数据源

    这个问题,在公司遇到了,一直没有学,今天学了一下. 后续,还要实验一下,暂时粘贴一下一个不错的url:https://www.cnblogs.com/xdp-gacl/p/4201094.html

  9. tesorflow - create neural network+结果可视化+加速神经网络训练+Optimizer+TensorFlow

    以下仅为了自己方便查看,绝大部分参考来源:莫烦Python,建议去看原博客 一.添加层 def add_layer() 定义 add_layer()函数 在 Tensorflow 里定义一个添加层的函 ...

  10. HDU-2177 取(2堆)石子游戏 (威佐夫博奕)

    Problem Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同 ...