【问题标题】:appsettings.json in .netCore console application.net Core 控制台应用程序中的 appsettings.json
【发布时间】:2023-04-10 22:52:01
【问题描述】:

我有一个带有以下值的 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; }
}

【问题讨论】:

标签: json .net-core appsettings


【解决方案1】:

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

编辑:

使用configuration.GetSection("SomeSection").Get&lt;SomeSection&gt;()我可以成功地从应用程序中获取POCO。见sample application

【讨论】:

  • 对不起,这不太有意义,我已经尝试了所有这些,我的主要问题是我可以访问 appsettings.json 中的单个值,但我什至无法将其序列化为一个类当我有一个 POCO 序列化成......也许是一个代码示例?这只是一个 .netcore 控制台应用程序,而不是一个网络应用程序 btw
  • 看看我的编辑,我添加了更多信息
  • 当我尝试 configuration.GetSection("SomeSection").Get&lt;SomeSection&gt;() 时,由于某种原因,它适用于您的示例。
  • 完美,我错过了.Get&lt;SomeSection&gt;,如果您在其中编辑答案,那么我可以将其标记为答案
  • 完美,标记为答案,干杯。总是小事:)
猜你喜欢
  • 2020-07-14
  • 2020-05-20
  • 2021-03-14
  • 1970-01-01
  • 2022-08-02
  • 2022-12-12
  • 1970-01-01
  • 1970-01-01
  • 2016-11-02
相关资源
最近更新 更多