【问题标题】:How to add a custom JSON file into IConfiguration based on a setting?如何根据设置将自定义 JSON 文件添加到 IConfiguration 中?
【发布时间】:2022-01-04 09:44:43
【问题描述】:

我正在开发 ASP.NET Core 6.0 WebAPI,我需要使用 Sage SData API 从 CRM 系统 (Sales Logix) 获取数据。我们有不同的 CRM 环境(生产、暂存、开发),我希望能够连接(或测试)我的 WebAPI 项目中的任何环境。

为此,我想在 appsettings.json(或 launchsetting.json)中添加一个配置键(以指示特定的 CRM 环境)。例如,当设置为"crmEnvironment": "Development" 时,我想包含一个名为 crm-dev.json 的自定义 json 文件。同样对于"crmEnvironment": "Staging",我想包含 crm-staging.json。

理想情况下,每个自定义 json 文件都包含 CRM 网址、用户名和密码。

请告诉我如何有条件地添加上面提到的 json 配置文件,或者考虑到安全性,有没有更好的方法来实现类似的结果。最好我可以加密自定义配置文件而不必偏离标准,就像我们通过继承 ProtectedConfigurationProvider 对 Web.Config 文件所做的那样。

我的问题类似于How can I add a custom JSON file into IConfiguration?。但由于 Program.cs 不再使用 Main() 方法,我想知道添加自定义 json 配置文件的正确方法是什么。

【问题讨论】:

  • 是这样的场景吗:您使用一组特定的 JSON 文件构建配置,但是其中一个文件告诉您需要哪些其他文件,因此您需要重新构建配置?
  • @scott-hannen 不,我只想随时从我的主配置文件 (appsettings.json) 中添加一个 json 文件
  • 尝试使用IOptionsSnapshot,它可以在文件更改时更新,而无需重新启动应用程序。
  • 我猜你对每个环境也有不同的应用设置。为什么不使用它。

标签: c# asp.net-core-webapi aspnetcore-environment


【解决方案1】:

如果这可行,我会使用这种方法。

.AddJsonFile($"Config\\appsettings.{hostContext.HostingEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true)

我将为每个环境创建 Json 文件。您可以通过 IHost 上下文设置环境变量值,也可以通过使用各自环境中的环境变量值来简化您的需求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多