.netCore控制台应用程序中的appsettings.json

时间:2017-08-08 04:57:10

标签: json .net-core appsettings

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

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

当我通过ConfigurationBuilder阅读时,我只能通过configuration["MailSettings:Username"]访问这些值。我想抓住整个MailOptions字符串,无论如何要做到这一点?我不想使用Json来解析文件等...我想坚持配置构建器。

我希望configuration.GetSection("MailOptions")有效吗?它只返回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课程

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

1 个答案:

答案 0 :(得分:2)

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

编辑:

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