Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 配置.GetValue<;T>;返回null但绑定有效_C#_Asp.net Core_.net Core_Appsettings - Fatal编程技术网

C# 配置.GetValue<;T>;返回null但绑定有效

C# 配置.GetValue<;T>;返回null但绑定有效,c#,asp.net-core,.net-core,appsettings,C#,Asp.net Core,.net Core,Appsettings,从我的appsettings.json获取数据时遇到问题。 该文件看起来像: "Integrations": { "System01": { "Host": "failover://(tcp://localhost:61616)?transport.timeout=2000", "User": "admin", "Password": "admin" }, "System02": { "Host": "failover:

从我的
appsettings.json
获取数据时遇到问题。 该文件看起来像:

  "Integrations": {
    "System01": {
      "Host": "failover://(tcp://localhost:61616)?transport.timeout=2000",
      "User": "admin",
      "Password": "admin"
    },
    "System02": {
      "Host": "failover://(tcp://localhost:61616)?transport.timeout=2000",
      "User": "admin",
      "Password": "admin"
    },
  }
我有以下DTO:

public class IntegrationsConfigurationDto
{
    public string Host { get; set; }
    public string User { get; set; }
    public string Password { get; set; }
}
当你试着像这样读的时候:

var config = _configuration.GetValue<IntegrationsConfigurationDto>("Integrations:System01");
我在
config
变量中正确获取了值

为什么会这样?在这种情况下如何使用
GetValue


提前感谢。

GetValue
仅适用于简单值,如
string
int
等-它不遍历嵌套配置的层次结构

参考:

ConfigurationBinder.GetValue
使用指定键从配置中提取一个值,并将其转换为指定类型。重载允许您在找不到密钥时提供默认值

不要使用
Bind
,而是使用以下命令来避免创建自己的
IntegrationsConfigurationDto

var config = _configuration.GetSection("Integrations:System01")
    .Get<IntegrationsConfigurationDto>();
var config=\u configuration.GetSection(“集成:System01”)
.Get();
参考:

ConfigurationBinder.Get
绑定并返回指定的类型
Get
比使用
Bind
更方便


你为什么不能用第二种方法?我可以。我只是想知道为什么第一个不起作用,以及我是否可以为它做些什么。我认为GetValue用于单个值,而不是一个部分。
var config = _configuration.GetSection("Integrations:System01")
    .Get<IntegrationsConfigurationDto>();