我有一个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; }
}
答案 0 :(得分:2)
配置框架是对底层源类型的抽象。因此MailOptions:Username
可能来自JSON,环境变量甚至是INI文件 - 配置系统甚至可以配置多个源。如果需要一个JSON字符串来配置您的邮件库并希望使用配置抽象,我建议创建一个类来保存设置并再次将其序列化为JSON字符串。
编辑:
使用configuration.GetSection("SomeSection").Get<SomeSection>()
我可以从应用中成功获取POCO。见sample application。