.net core - AppSettings.json还是Systemvariables?

时间:2017-09-05 09:33:48

标签: c# .net .net-core

我是C#,。net-core等的新手。 我正在为我们的Intranet编写一个小的WebApi,在这个Api中我必须存储一些变量(例如LDAP-Path或AdminUser和AdminUserPW(作为解密的字符串))。

所以我的问题是: 什么是存储这些变量的最佳位置? 在appsettings.json中还是在服务器的Systemvariables中?

3 个答案:

答案 0 :(得分:0)

LDAP路径,数据库连接字符串,其他可配置的内容始终存储在WebApi配置文件中,这就是为什么。如果只是小型WebApi(没有很多严格的安全要求)。对于AdminUser,最好使用Secret Manager

Systemvariables更适合于在文件系统上与其他应用程序或模块共享某些特定路径,如果另一个人在服务器上安装了新的应用程序,则他可以轻松使用或重写您的变量。

答案 1 :(得分:0)

两个。

  1. 将您的开发环境值放在appsettings.json中。
  2. 将生产值放入服务器的环境设置中。
  3. 您可以使用如下语法来启用覆盖:

    var configuration = new ConfigurationBuilder()。SetBasePath(AppContext.BaseDirectory) .AddJsonFile(“ appsettings.json”) .AddEnvironmentVariables() .Build();

这是“从JSON文件加载配置,然后覆盖我在服务器级别定义的所有值”。

此方法的优点是您不必在环境之间随意处理配置文件。每次部署代码时,appsettings.json都会被覆盖,但是服务器级别的变量保持不变,因此是正确的。

答案 2 :(得分:0)

您可以使用appsettings.json来存储变量。根据您的编码阶段,Appsettings.json具有不同的风格:

  1. 发展
  2. 登台
  3. 测试
  4. 产品

这也将有所帮助,您可以使用如下代码:

if (env.IsDevelopment())
{
    app.UseDeveloperExceptionPage();

}

if (env.IsProduction() || env.IsStaging() || env.IsEnvironment("Staging_2"))
{
    // do something here
}

您还可以通过启动程序来依赖注入IWebHostEnvironment。

密码不应以纯文本存储,Microsoft建议使用secrets.json

查看此处:

https://docs.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-3.1&tabs=windows