appsettings.json 在 .net Core 控制台应用程序中

appsettings.json in .netCore console application

我有一个 appsettings.json 文件,其中包含以下值

{ 
  "MailOptions": 
  { 
    "Username": "ruskin", 
    "Password": "password" 
  } 
}

当我通过 ConfigurationBuilder 读取它时,我只能通过 configuration["MailSettings:Username"] 访问值。我想获取整个 MailOptions 字符串,是否可以这样做?我不想使用 Json 来解析文件等...我想坚持使用配置生成器。

我希望 configuration.GetSection("MailOptions") 能工作?它只是 returns null.

我试过的

SomeSection aSection = new SomeSection();
ServiceCollection serviceCollection = new ServiceCollection();
serviceCollection.Configure<SomeSection>(options => configuration.GetSection("SomeSection").Bind(aSection));
var someSection = serviceCollection.BuildServiceProvider().GetService<IOptions<SomeSection>>();

// aSection is instantiated but no values in it
// someSection is null

我的appsettings.json

{
  "SomeSection": {
    "UserName": "ruskin",
    "Password": "dantra" 
  }
}

还有我的 POCO class

public class SomeSection
{
    public string UserName { get; set; }
    public string Password { get; set; }
}

配置框架是对底层源类型的抽象。因此 MailOptions:Username 可能来自 JSON、环境变量甚至 INI 文件 - 配置系统甚至可以配置多个来源。如果需要 JSON 字符串来配置您的邮件库并希望使用配置抽象,我建议创建一个 class 来保存设置并再次将其序列化为 JSON 字符串。

编辑:

使用configuration.GetSection("SomeSection").Get<SomeSection>() 我可以从应用程序中成功获取 POCO。参见 sample application