【发布时间】:2018-09-12 22:20:41
【问题描述】:
如何创建一个搜索环境变量的ConfigurationBuilder,如果没有找到,则使用appSetting 参数代替?
我目前的代码:
public void ConfigureServices(IServiceCollection services)
{
// Get configuration
var environmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddEnvironmentVariables()
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: false)
.AddJsonFile($"appsettings.{environmentName}.json", optional: true, reloadOnChange: false)
.Build();
var settings = new AppSettings();
configuration.GetSection("App").Bind(settings);
// ...
services.AddSingleton<ILogger, LogConsole>()
.AddSingleton<IDatabaseManager, PostgresDatabaseManager>()
.AddSingleton<IDbConnectionFactory, PostgreDbConnectionFactory>()
.Configure<AppSettings>(configuration.GetSection("App"))
.AddOptions()
.BuildServiceProvider();
}
问题是“.Configure<AppSettings>(configuration.GetSection("App"))”行只保留AppSettings 中的内容,但如下所示:
configuration 拥有我所有的环境变量 (Count = 89) 和 AppSettings 变量。
我尝试了以下内容:
https://www.jerriepelser.com/blog/aspnet-core-no-more-worries-about-checking-in-secrets/
但我的印象是这种类型的配置与强类型配置不太匹配。
【问题讨论】:
标签: c# asp.net-core configuration