ASP.NET Core配置设置之Configuration包

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 中的配置

到此这篇关于ASP.NET Core配置设置之Configuration包的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • ASP.NET Core中的Configuration配置一

    相关文章 ASP.NET Core2.2 中的Configuration配置一 ASP.NET Core2.2 中的Configuration配置二 1.前言 ASP.NET Core在应用程序上引入Microsoft.Extensions.Configuration配置,可以支持多种方式配置,包括命令行配置.环境变量配置.文件配置.内存配置,自定义配置等等.下面我们就其中几个配置来聊聊. 2.命令行配置 CommandLineConfigurationProvider在应用程序运行时会从(例如

  • ASP.NET Core中的Configuration配置二

    相关文章 ASP.NET Core2.2 中的Configuration配置一 ASP.NET Core2.2 中的Configuration配置二 1.内存配置 MemoryConfigurationProvider使用内存中集合作为配置键值对.若要激活内存中集合配置,请在ConfigurationBuilder的实例上调用AddInMemoryCollection扩展方法.可以使用IEnumerable<KeyValuePair<String,String>> 初始化配置提供程

  • .Net Core配置Configuration具体实现

    目录 核心类 构建 ConfigurationBuilder IConfigurationSource ConfigurationProvider ConfigurationRoot 查询 索引器 GetSection DBConfiguration示例 最近又研究了一下.NetCore配置选项的源码实现,又学习到了不少东西.这篇文章先写一下IConfiguration的学习成果,Options的后面补上 核心类 ConfigurationBuilder:IConfigurationBuilde

  • .Net Core3.0 配置Configuration的实现

    准备 .NET core和.NET项目配置上有了很大的改变,支持的也更加丰富了比如命令行,环境变量,内存中.NET对象,设置文件等等..NET项目我们常常把配置信息放到webConfig 或者appConfig中.配置相关的源码https://github.com/aspnet/Extensions:如果打开源码项目如果遇到以下错误,未遇到直接跳过. 错误提示:error : The project file cannot be opened by the project system, bec

  • 详解ASP.NET Core实现强类型Configuration读取配置数据

    前言 实现读取JSON文件几种方式,在项目中采取老办法简单粗暴,结果老大过来一看,恩,这样不太可取,行吧那我就用.NET Core中最新的方式诺,切记,适合的才是最好的,切勿懒. .NET Core读取JSON文件通过读取文件方式 当我将VS2015项目用VS2017打开后再添加控制器,此时会报错如下: 此时我们应该在该项目中的.csproj中添加如下这一句才能解决此问题: <ItemGroup> <DotNetCliToolReference Include="Microso

  • 浅析.netcore中的Configuration具体使用

    目录 添加其他配置文件 源码解读: 读取层级配置项 选项模式获取配置项 命名选项的使用 不管是.net还是.netcore项目,我们都少不了要读取配置文件,在.net中项目,配置一般就存放在web.config中,但是在.netcore中我们新建的项目根本就看不到web.config,取而代之的是appsetting.json. 新建一个webapi项目,可以在startup中看到一个IConfiguration,通过框架自带的IOC使用构造函数进行实例化,在IConfiguration中我们发

  • ASP.NET Core配置设置之Configuration包

    ASP.NET Core 中提供了一个Configuration 包,用以应用配置基于配置提供程序建立的键值对.这里以json文件配置的方式,简单的介绍一下它的用法. 首先定义一个配置文件appsettings.json: { "key1": "value1", "key2": -1, "subsection": { "key1": "value2", "key2":

  • ASP.NET Core 配置和使用环境变量的实现

    前言 通常在应用程序开发到正式上线,在这个过程中我们会分为多个阶段,通常会有 开发.测试.以及正式环境等.每个环境的参数配置我们会使用不同的参数,因此呢,在ASP.NET Core中就提供了相关的环境API,方便我们更好的去做这些事情. 环境 ASP.NET Core使用ASPNETCORE_ENVIRONMENT来标识运行时环境. ASP.NET Core预设环境 Development:开发环境 Staging:暂存环境(测试环境) Production:正式环境 要取得系统变量ASPNET

  • Asp.net Core 如何设置黑白名单(路由限制)

    在原有的AspnetMvc中我们会使用到路由访问限制,在AppStart/RouteConfig.cs中写上如下: routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 但是在aspnet core mvc已经不存在RouteConfig.cs的这个给文件和这种写法,我们该如何在Aspnet core mvc中实现相同效果呢? 这里我们需要使用到的中间件时UrlFirewall 1)说明: UrlFirewall 是一个开源.轻便的对htt

  • ASP.NET Core配置和管理Web主机

    目录 1.前言 2.设置主机 2.1执行下列任务 2.2重写和增强定义的配置 3.主机配置值 3.1应用程序键(名称) 3.2捕获启动错误 3.3内容根 3.4详细错误 3.5环境 3.6HTTPS端口 3.7服务器(Kestrel) URL 4.重写配置 5.管理主机 6.IHostingEnvironment接口 7.IApplicationLifetime接口 8.作用域验证 1.前言 ASP.NET Core应用程序可以配置和启动主机(Host).主机负责应用程序启动和生命周期管理,配置

  • Asp.Net Core配置多环境log4net配置文件的全过程

    目录 前言 配置log4net 总结 前言 在之前的文章中有讲到AspNetCore多环境配置文件的应用,我们根据自己多种环境分别配置多个appsettings.$EnvironmentName.json文件. 在实际的开发中我们可能会遇到不只一个配置文件,如当我们使用log4net日志库时,喜欢使用单独的log4net.config配置文件.并且我们还遇到不同环境下的配置文件还存在差异.这时我们可能可以效仿appsettings.json多环境配置的风格实现多环境配置文件. 配置log4net

  • ASP.NET Core配置教程之读取配置信息

    提到"配置"二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置信息定义在这两个文件之中.到了.NET Core的时候,很多我们习以为常的东西都发生了改变,其中也包括定义配置的方式.总的来说,新的配置系统显得更加轻量级,并且具有更好的扩展性,其最大的特点就是支持多样化的数据源.我们可以采用内存的变量作为配置的数据源,也可以直接配置定义在持久化的文件甚至数据库中. 由

  • ASP.NET Core中间件设置教程(7)

    Asp.Net Core-中间件 在这一章,我们将了解如何设置中间件.中间件技术在 ASP.NET Core中控制我们的应用程序如何响应 HTTP 请求.它还可以控制应用程序的异常错误,这是一个在如何进行身份验证和授权用户执行特定的操作的关键. 中间件是组装成应用的管道来处理请求和响应的软件组件. 每个组件可以选择是否要在管道中将请求传递到下一个组件,并可以在管道中执行某些操作之前和之后的任务. Request委托用于构建请求管道.Request委托用来处理每个HTTP请求. 每件中间件在 AS

  • ASP.NET Core环境设置教程(2)

    Asp.Net Core是Asp.Net的一个重大的重新设计. 这个话题介绍了ASP.NET Core的新的概念,并解释它们如何帮助您开发现代的web应用程序. 使用ASP.NET Core开发应用程序,以下必须安装在你的系统: Microsoft Visual Studio 2015 Microsoft .NET Core 1.0.0 - VS 2015 Tooling Preview 2 微软提供了一个免费版本的Visual Studio,它里面还包含了SQL Server,它可以从www.

  • asp.net core中灵活的配置方式详解

    前言 asp.net core支持外部文件和命令行参数方式来配置系统运行所需要的配置信息,我们从下面两个常用场景来具体说下具体使用方法. 一.监听地址及端口配置 1,命令行方式 asp.net core系统通过命令行方式启动,使用的命令如下: dotnet run 上面的命令直接在源代码目录下执行,便可以编译程序并运行.那对于已经发布好的程序,就不能使用上面的指令了,应该使用下面的指令: dotnet 程序集文件名(程序集文件名就是程序发布后生成的dll文件) 上面两个指令都能够启动应用程序.程

  • 为ASP.NET Core强类型配置对象添加验证的方法

    前言 本篇博客中,我将描述如何在ASP.NET Core程序启动时,确保强类型配置对象正确的绑定成功.通过使用IStartupFilter接口对象,你可以更早的验证你的配置对象是否绑定了正确的值,并不需要等待程序启动之后的某个时间点再验证. 这里我将简单描述一下ASP.NET Core的配置系统,以及如何使用强类型配置.我将主要描述一下如何去除对IOptions接口的依赖,然后我会描述一下强类型配置对象绑定不正确的问题.最后,我将给出一个在程序启动时验证强类型配置对象的方案. ASP.NET C

随机推荐