【发布时间】:2018-08-06 19:40:14
【问题描述】:
我有一个 ASP.NET Core 应用程序,它在 Program.cs 文件中构建自定义配置(“Main”方法。)就是这样构建的:
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
// custom config file
.AddJsonFile("custom.json", optional: false, reloadOnChange: false)
.Build();
BuildWebHost(args, configuration).Run();
发生的情况是,在 BuildWebHost 调用配置正确包含两部分 - appsettings.json 和 custom.json。
当我在 Startup 构造函数中捕获执行时,custom.json 配置消失了:它不存在。配置中有许多其他分支传递给 Startup ctor,但没有 custom.json 分支。
我可能做错了什么?
更新:
public static IWebHost BuildWebHost(string[] args, IConfiguration config)
{
var ret = WebHost.CreateDefaultBuilder(args)
.UseConfiguration(config)
.UseStartup<Startup>()
.Build();
return ret;
}
UPDATE 2(启动构造函数):
public Startup(IConfiguration configuration)
{
this.Configuration = configuration;
}
【问题讨论】:
-
您是否检查了
custom.json文件上的属性以确保它的Copy to Output设置是Copy Always或Copy if newer? -
是的,它不影响它。目前它设置为“构建操作:内容”,“复制到输出目录:始终复制”
-
我怀疑你的
configuration变量没有被传递,或者你在传递到Startup类后没有正确分配它。它不是 API 的官方部分,但是如果您在启动时将鼠标悬停在您的IConfiguration上,它会为_providers列出什么? -
那里有 5 个提供程序:ChainedConfigurationProvider、2 个 JsonConfigurationProviders(它们都不是我的 custom.json)、EnvironmentVariablesConfigurationProvider 和 CommandLineConfigurationProvider。
-
如果您的
Startup类存在,并且您在任何地方设置IConfiguration成员,您能否发布它的构造函数?
标签: c# asp.net-core configuration