首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

.NET核心:为什么ConfigurationBuilder["Key"]的结果为空when.ConfigurationBuilder.GertChildren有元素?

.NET Core中的ConfigurationBuilder是用于构建应用程序配置的工具。它允许我们从不同的配置源(如JSON文件、环境变量、命令行参数等)中读取配置信息,并将其组织成一个统一的配置对象。

在给定的问答内容中,问题是为什么当ConfigurationBuilder.GetChildren()方法返回了元素时,使用ConfigurationBuilder["Key"]获取的结果却为空。

首先,需要理解ConfigurationBuilder的工作原理。当我们调用ConfigurationBuilder的GetChildren()方法时,它会返回一个IEnumerable<IConfigurationSection>对象,该对象包含了所有子配置节点。这些子节点可以通过键值对的形式进行访问,其中键是节点的名称。

然而,当我们使用ConfigurationBuilder["Key"]来访问某个配置节点时,它实际上是在尝试获取该节点的值,而不是获取该节点的子节点。因此,如果该节点没有直接的值,而是包含了子节点,那么使用ConfigurationBuilder["Key"]将返回空值。

举个例子来说明,假设我们有以下的配置文件appsettings.json:

代码语言:txt
复制
{
  "Key": {
    "SubKey1": "Value1",
    "SubKey2": "Value2"
  }
}

当我们使用ConfigurationBuilder.GetChildren()方法时,它将返回一个包含了名为"Key"的子节点的IEnumerable<IConfigurationSection>对象。但是,当我们使用ConfigurationBuilder["Key"]时,它将尝试获取"Key"节点的值,而不是获取它的子节点。由于"Key"节点没有直接的值,所以返回的结果为空。

如果我们想要获取"Key"节点的子节点,可以使用GetSection("Key")方法来获取一个IConfigurationSection对象,然后通过该对象的GetChildren()方法来获取子节点。示例代码如下:

代码语言:txt
复制
var keySection = ConfigurationBuilder.GetSection("Key");
var subSections = keySection.GetChildren();

这样,我们就可以通过subSections来访问"Key"节点的子节点了。

在腾讯云的产品中,可以使用腾讯云的云原生产品Tencent Cloud Native(https://cloud.tencent.com/product/tke)来部署和管理基于.NET Core的应用程序。Tencent Cloud Native提供了强大的容器化和编排能力,可以帮助开发者更好地管理和扩展应用程序。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

.NET Core 3.x之下的配置框架

一.配置框架的核心类库 首先我们使用.NET Core的配置框架需要安装额外的NuGet扩展包,下面是列举最常用的几个扩展包以及所对应的配置功能 NuGet Package Description Microsoft.Extensions.Configuration...的构建的步骤: 定义ConfigurationBuilder 为ConfigurationBuilder添加ConfigurationSource 通过ConfigurationBuilder...,key为Name的value变化了,证明当不同配置源存在相同Key时,会被后添加的配置源覆盖其value 四.通过环境变量配置 下面的环节由于出于演示效果,通过WPF程序来演示,首先创建好一个wpf项目...我们会发现,之前的环境变量都被过滤了,只能读取被过滤前缀后的环境变量 配置环境变量时的注意点: 和json等文件不同,环境变量的Key是以__双下划线为分层键,而不是:冒号 分层读取的时候是以冒号:来进行读取...false, true) 该方法有是一个重载方法,最常用的是三个参数的重载方法,下面是三个参数的作用 path:文件路径 optional:默认为false,当找不到该文件路径会报错,true

52750
  • ASP.NET Core的配置(3): 将配置绑定为对象

    我们利用这个ConfigurationBuilder对象创建的Configuration对象并调用这个ConfigurationSection的Get方法将Key为“Profile”的配置节绑定为一个Profile...我们利用这个ConfigurationBuilder对象创建的Configuration对象并调用这个ConfigurationSection的Get方法将Key为“Profiles”的配置节绑定为一个...对象的每个元素的相关信息打印出来,该程序执行之后会在控制台上产生如下所示的输出结果。...字典可以视为元素类型为键值对的集合,两者在配置树上的表示非常相似,它们之间的唯一不同之处在于前者采用索引作为集合元素所在配置节的Key,后者直接将键值对的Key直接作为配置节的Key。...我们利用这个ConfigurationBuilder对象创建的Configuration对象并调用这个ConfigurationSection的Get方法将Key为“Profiles”的配置节绑定为一个

    1.3K60

    ASP.NET Core的配置(4):多样性的配置来源

    如果Optional为True,在创建JsonConfiguationProvider是指定一个不存在的文件将不会抛出异常,在这种情况下它会创建一个空的字典对象作为配置源。...同样以前面定义的Profile类型为例,我们可以利用如下所示的三个JSON文件分别定义一个完整的Profile对象、一个Profile对象的集合以及一个Key和Value类型分别为字符串和Profile...举个简单的例子,对于一个元素类型为Profile的集合,我们可以采用具有如下结构的XML来表现。...比如我们在元素中按照如下的方式添加了一个值为“Foobar”的Name属性,Email和PhoneNo在配置字典中的Key将具有额外的前缀“Foobar”。...属性具有自动附加前缀的作用,我们可以利用来表示集合元素的索引,如果需要使用XML来表示一个字典,我们照样可以用它来表示字典元素的Key。

    1K80

    配置:读取配置数据

    一、配置编程模型三要素 就编程层面来讲,.NET Core的配置系统由如下图所示的三个核心对象构成。读取出来的配置信息最终会转换成一个IConfiguration对象供应用程序使用。...为了验证该Options对象是否与原始的配置一致,我们将它的四个属性打印在控制台上。程序运行之后,控制台上将会产生如下所示的输出结果。 ?...由于承载原始配置信息的是一个元素类型为KeyValuePair的集合,它在物理存储上并不具有树形化的层次结构,那么它如何能够提供一个结构化的IConfiguration对象承载的数据呢...除此之外,为了描述配置树的结构,配置字典需要将对应叶子节点在配置树中的路径作为Key。...这个程序运行之后会在控制台上呈现如下所示的输出结果。 ?

    2.1K60

    .NET Core采用的全新配置系统: 读取配置数据

    这个全新的配置系统为配置的读取定义了非常简单的API,这些API涉及到三个核心的对象,我们不妨称之为“配置编程模型三要素”。...目录 一、配置编程模型三要素 二、以键-值对的形式读取配置 三、读取结构化的配置 四、将结构化配置直接绑定为对象 一、配置编程模型三要素 就编程层面来讲,.NET Core的这个配置系统由如下图所示的三个核心对象构成...由于承载原始配置信息的是一个元素类型为KeyValuePair的集合,它在物理存储上并不具有树形化的层次结构,那么它如何能够最终提供一个结构化的Configuration...除此之外,为了描述配置树的结构,配置字典需要将对应叶子节点在配置树种的路径作为Key。...这个程序之后之后改程序会在控制台上呈现如下所示的输出结果。

    68480

    ASP.NET Core的配置(2):配置模型详解

    接下来我们将会对由这三个核心对象组成的配置模型进行详细介绍,不过在此之前我们有必要来认识配置信息在不同载体中所体现出来的三种结构。...我们可以调用TryGet方法获取有指定的Key所标识的配置项的值。...除此之外,这个方法还具有一个字符串集合类型的参数earlierKeys,它表示预先解析出来的Key,这个列表会包含在返回的结果中。...这段程序执行之后会在控制台上产生如下的输出结果,我们从中可以看出一个细节,返回的结构并没有将重复的Key剔除。...右图所示的UML展示了配置模型中以Configuration、ConfigurationProvider和ConfigurationBuilder为核心的相关接口/类型以及它们之前的关系。

    1.3K90

    .NET Core开发实战(第8课:配置框架:让服务无缝适应各种环境)--学习笔记

    08 | 配置框架:让服务无缝适应各种环境 配置是应用程序发布到各种环境的必备能力,这一节开始详细讲解 ASP.NET Core 的配置框架 配置框架的核心包有两个,一个抽象包,一个实现包 Microsoft.Extensions.Configuration.Abstractions...,比如从命令行读取,从环境变量读取,从文件中读取 配置框架的核心接口有四个 IConfiguration IConfigurationRoot IConfigurationSection IConfigurationBuilder...配置框架有一个核心的扩展点,就是注入自己的配置源,也就是说可以指定任意的配置的数据来源,注入到配置框架里面 IConfigurationSource IConfigurationProvider 接下来通过一个基本的控制台应用程序从头到尾演示一个配置的构建和使用...是用来构建配置的核心,所有设置都在 builder 中完成 IConfigurationBuilder builder = new ConfigurationBuilder()...是用来构建配置的核心,所有设置都在 builder 中完成 IConfigurationBuilder builder = new ConfigurationBuilder()

    38910

    .NET Core采用的全新配置系统: 配置模型设计详解

    在《.NET Core采用的全新配置系统[1]: 读取配置数据》中,我们通过实例的方式演示了几种典型的配置读取方式,其主要目的在于使读者朋友们从编程的角度对.NET Core的这个全新的配置系统具有一个大体上的认识...通过上面演示的实例我们知道,配置的编程模型涉及到三个核心对象,它们分别是Configuration、ConfigurationSource和ConfigurationBuilder。...如果从设计层面来审视这个配置系统,还缺少另一个名为ConfigurationProvider的核心对象,总得来说,.NET Core的这个配置模型由这四个核心对象组成。...对于配置模型的四个核心对象,Configuration对配置树的体现,其他三个(ConfigurationSource、ConfigurationBuilder和ConfigurationProvider...总的来说,配置模型涉及到四个核心对象,包括承载配置逻辑结构的Configuration对象和它的创建者ConfigurationBuilder,以及与配置源相关的ConfigurationSource和

    693100

    ASP.NET Core 6框架揭秘实例演示:将配置绑定为对象

    我们只要将叶子节点所在的路径作为字典元素的Key,就可以通过一个字典对象体现复合对象的结构。...如果目标类型为元素类型为Profile的集合,那么配置树应该具有图2所示的结构。...如果将目标类型设置为IEnumerable,那么最终生成的集合只有两个元素。倘若目标类型切换成Profile数组,数组的长度依然为3,但是第一个元素是空。...如果采用配置树的形式表示这样一个字典对象,就会发现它与针对集合的配置树在结构上几乎是一样的,唯一的区别是集合元素的索引直接变成字典元素的Key。...也就是说,图2所示的配置树同样可以表示成一个具有三个元素的Dictionary对象,它们对应的Key分别“0”、“1”和“2”,所以我们可以按照如下方式将承载相同结构数据的

    73130

    .NET Core采用的全新配置系统: 聊聊默认支持的各种配置源

    较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持。...我们知道MemoryConfigurationSource采用一个字典对象(具体来说应该是一个元素类型为KeyValuePair的集合)作为存放原始配置数据的容器。...假设我们有一个命令“exec”并采用如下所示的方式执行某个托管程序(app)。...接下来我们利用这个ConfigurationBuilder生成一个Configuration对象,并将其所有子配置节的Key和Value打印出来。...我们运行该程序后分别采用上述五种方式提供了命令行参数,根据如下所示的输出结果,会发现解析命令行参数生成的配置是完全等效的。 ?

    77190

    ASP.NET Core的配置(4):多样性的配置来源

    较之传统通过App.config和Web.config这两个XML文件承载的配置系统,ASP.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持。...如果希望删除指定名称的环境变量,我们只需要在调用这个方法的时候将value参数设置为Null或者空字符串即可。...有一点值得一提的是,如果我们在创建EnvironmentVariablesConfigurationProvider对象是指定了用于筛选环境变量的前缀,当符合条件的环境变量被添加到自身的配置字典之后,这个前缀也会从元素的...我们通过一个简单的实例来说明命令行开关的集中指定方式。假设我们有一个命令“exec”并采用如下所示的方式执行某个托管程序(app)。...如果采用缩写形式,指定的命名行开关名称必须以“-”或者“--”为前缀,那么这个switchMappings参数对应字典对象中的Key也需要采用相应的前缀。

    76960

    ASP.NET Core的配置(1):读取配置信息

    由于很多人都不曾接触过这个采用全新设计的配置系统,为了让大家对此有一个感官的认识,我们先从编程的角度对它作一个初体验。...我们创建了一个类型为ConfigurationBuilder的对象,调用其Add方法添加的ConfigurationProvider是一个类型为MemoryConfigurationProvider的对象...顾名思义,MemoryConfigurationProvider利用内存中的对象来提供原始的配置信息,具体来说这些原始的配置信息保存在一个元素类型为KeyValuePair的是一个元素类型为KeyValuePair的集合,所以原始配置在物理存储上并不具有树形化的层次结构,那么它如何能够最终提供一个结构化的Configuration...改程序执行之后会在控制台上呈现如下所示的输出结果。

    1.5K80

    配置:多样化的配置源

    我们知道MemoryConfigurationSource配置源采用一个字典对象(具体来说应该是一个元素类型为KeyValuePair的集合)作为存放原始配置数据的容器。...假设我们有一个命令“exec”并采用如下所示的方式执行某个托管程序(app)。 exec app {options} 在执行这个命令的时候我们通过相应的命令行开关指定多个选项。...需要注意的是,在通过字典定义命令行开关映射的时候,作为目标名称的Key应该添加 “-” 前缀。...]:配置模型总体设计 [ASP.NET Core 3框架揭秘] 配置[4]:将配置绑定为对象 [ASP.NET Core 3框架揭秘] 配置[5]:配置数据与数据源的实时同步 [ASP.NET Core...3框架揭秘] 配置[6]:多样化的配置源[上篇] [ASP.NET Core 3框架揭秘] 配置[7]:多样化的配置源[中篇] [ASP.NET Core 3框架揭秘] 配置[8]:多样化的配置源[下篇

    63540

    .net 温故知新:【8】.NET 中的配置从xml转向json

    一、配置概述 在.net framework平台中我们常见的也是最熟悉的就是.config文件作为配置,控制台桌面程序是App.config,Web就是web.config,里面的配置格式为xml格式。...,如果配置项太多层级关系参数表达凌乱,在.net core开始也将配置的格式默认成了json格式,包括现在很多的其它配置也是支持的,比如java中常用的yaml格式,为什么能支持这么多读取源和格式,其实质在于配置提供程序...目前.NET 中的配置是使用一个或多个配置提供程序执行的。...配置提供程序使用各种配置源从键值对读取配置数据,这些配置程序稍后我们会看到,读取的配置源可以是如下这些: 设置文件,appsettings.json 环境变量 Azure Key Vault Azure...接着我们修改main方法,引入DI,并将AddJsonFile方法的参数reloadOnChange设置为true,optional参数是否验证文件存在,建议开发时都设置为true,这样如果文件有问题会进行报错

    1.5K30

    《ASP.ENT Core 与 RESTful API 开发实战》(第3章)-- 读书笔记(下)

    第 3 章 ASP.NET Core 核心特性 3.5 配置 要访问配置,需要使用 ConfigurationBinder 类,它实现了 IConfigurationBuilder 接口,该接口包括两个重要的方法...: {item.Key}, Value: {item.Value}"); } // 通过指定 Key 来访问其配置项值 Console.WriteLine("FontFamily: " + config...可以通过双下划线代替冒号 如果希望改变上述添加配置的方式,可以创建 ConfigurationBuilder 实例并调用 IWebHostBuilder 接口的 UseConfiguration 方法...属性 强类型对象,我们希望将多个配置映射为具有同名属性的 .NET 对象,需要使用 Options 模式,在 ConfigureServices 方法内添加 services.Configure的细节 如果要自定义显示结果,则可以调用 UseStatusCodePages 的另一个重载形式

    59610
    领券