【发布时间】: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