C# IConfiguration.GetSection()作为属性返回null
我正在尝试检索应用程序中的配置 我已将IConfiguration传递到服务类中,该类需要拉取一些设置 该类看起来有点像这样:C# IConfiguration.GetSection()作为属性返回null,c#,asp.net-core,as-operator,C#,Asp.net Core,As Operator,我正在尝试检索应用程序中的配置 我已将IConfiguration传递到服务类中,该类需要拉取一些设置 该类看起来有点像这样: private IConfiguration _configuration; public Config(IConfiguration configuration) { _configuration = configuration; } public POCO GetSettingsConfiguration() { var section = _con
private IConfiguration _configuration;
public Config(IConfiguration configuration)
{
_configuration = configuration;
}
public POCO GetSettingsConfiguration()
{
var section = _configuration.GetSection("settings") as POCO;
return section;
}
public class POCO
{
public string URL { get; set; }
public string Username { get; set; }
public SecureString Password { get; set; }
public string Domain { get; set; }
}
在debug中,我可以看到_配置确实包含这些设置
但是我的“section”只是返回为null
我知道我可以尝试设置在启动时创建的Poco,然后作为依赖项注入,但是由于设置的原因,如果可能的话,我宁愿在与注入的IConfiguration不同的类中进行设置
My appsettings.json具有以下值:
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"settings": {
"Username": "user",
"Password": "password",
"Domain": "example.com",
"URL": "http://service.example.com"
}
}
我的poco类如下所示:
private IConfiguration _configuration;
public Config(IConfiguration configuration)
{
_configuration = configuration;
}
public POCO GetSettingsConfiguration()
{
var section = _configuration.GetSection("settings") as POCO;
return section;
}
public class POCO
{
public string URL { get; set; }
public string Username { get; set; }
public SecureString Password { get; set; }
public string Domain { get; set; }
}
您需要使用:
var section = _configuration.GetSection("settings").Get<POCO>();
var section=\u configuration.GetSection(“设置”).Get();
从
GetSection
返回的只是一个字符串字典。您不能将其强制转换到您的POCO类。IConfiguration
和IConfigurationSection
具有用于此目的的扩展方法:
var-poco=new-poco();
_configuration.GetSection(“设置”).Bind(poco);
或者只是
var poco=_configuration.GetSection(“设置”).Get(typeof(poco));
或泛型
var poco=\u configuration.GetSection(“设置”).Get();
以操作员的身份阅读:在GetSelection之后,我没有.Get选项。它位于Microsoft.Extensions.Configuration
命名空间中。我不知道你怎么还没有使用它,但是如果你没有,添加一个。否则,您的项目出现严重问题。可以使用Microsoft.Extensions.Configuration确认其。类库以.NETCore2.2为目标,不知道该告诉您什么。就在那儿。确保您的项目正在正确生成。添加nuget软件包Microsoft.extensions.Configurations.Binding
后,它工作正常