【发布时间】:2019-11-12 22:02:29
【问题描述】:
我们需要根据本地与否读取多个应用设置。我们通过添加appsettings.local.json 实现了这一点。
但是我们看到,虽然我们添加了这个文件并设置了必要的配置,但我们无法从appsettings.local.json 读取配置数据,它一直看到appsettings.json。
让我通过代码告诉:
public static void Main(string[] args)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.AddJsonFile("appsettings.local.json", optional: true)
.AddEnvironmentVariables()
.AddCommandLine(args)
.Build();
CreateWebHostBuilder(args, config).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args, IConfiguration config)
{
var webHostBuilder = WebHost.CreateDefaultBuilder(args)
.UseApplicationInsights()
.ConfigureServices(services => services.AddSingleton<IConfiguration>(config))
.UseStartup<Startup>();
return webHostBuilder;
}
在CreateWebHostBuilder 中,如果我们不添加.ConfigureServices(services => services.AddSingleton<IConfiguration>(config)),我们将无法从appsettings.local.json 读取数据。添加后,我们可以阅读appsettings.local.json。所以我的问题是这里发生了什么?谁能给个合理的解释?
【问题讨论】:
标签: c# asp.net-core asp.net-core-2.0