我是C#,。net-core等的新手。 我正在为我们的Intranet编写一个小的WebApi,在这个Api中我必须存储一些变量(例如LDAP-Path或AdminUser和AdminUserPW(作为解密的字符串))。
所以我的问题是: 什么是存储这些变量的最佳位置? 在appsettings.json中还是在服务器的Systemvariables中?
答案 0 :(得分:0)
LDAP路径,数据库连接字符串,其他可配置的内容始终存储在WebApi配置文件中,这就是为什么。如果只是小型WebApi(没有很多严格的安全要求)。对于AdminUser,最好使用Secret Manager
Systemvariables更适合于在文件系统上与其他应用程序或模块共享某些特定路径,如果另一个人在服务器上安装了新的应用程序,则他可以轻松使用或重写您的变量。
答案 1 :(得分:0)
两个。
您可以使用如下语法来启用覆盖:
var configuration = new ConfigurationBuilder()。SetBasePath(AppContext.BaseDirectory) .AddJsonFile(“ appsettings.json”) .AddEnvironmentVariables() .Build();
这是“从JSON文件加载配置,然后覆盖我在服务器级别定义的所有值”。
此方法的优点是您不必在环境之间随意处理配置文件。每次部署代码时,appsettings.json
都会被覆盖,但是服务器级别的变量保持不变,因此是正确的。
答案 2 :(得分:0)
您可以使用appsettings.json来存储变量。根据您的编码阶段,Appsettings.json具有不同的风格:
这也将有所帮助,您可以使用如下代码:
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