首页
学习
活动
专区
工具
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...,keyNamevalue变化了,证明当不同配置源存在相同Key时,会被后添加配置源覆盖其value 四.通过环境变量配置 下面的环节由于出于演示效果,通过WPF程序来演示,首先创建好一个wpf项目...我们会发现,之前环境变量都被过滤了,只能读取被过滤前缀后环境变量 配置环境变量时注意点: 和json等文件不同,环境变量Key是以__双下划线分层键,而不是:冒号 分层读取时候是以冒号:来进行读取...false, true) 该方法是一个重载方法,最常用是三个参数重载方法,下面是三个参数作用 path:文件路径 optional:默认为false,当找不到该文件路径会报错,true

49750

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

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

99080

配置:读取配置数据

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

2.1K60

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

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

1.3K60

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

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

66380

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

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

1.2K90

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

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

68930

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

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

654100

.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()

33610

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

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

73890

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

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

73660

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

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

1.4K80

.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.3K30

配置:多样化配置源

我们知道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]:多样化配置源[下篇

60940

《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<UISetting...则能够自定义关于这些错误状态码细节 如果要自定义显示结果,则可以调用 UseStatusCodePages 另一个重载形式

57310
领券