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。
我有一个 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。