奇怪的IConfiguration传递给启动模块

时间:2018-08-06 19:40:14

标签: c# asp.net-core configuration

我有一个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;
}

更新2(启动构造函数):

public Startup(IConfiguration configuration)
{
    this.Configuration = configuration;
}

1 个答案:

答案 0 :(得分:1)

我还没有弄清楚UseConfiguration中的Program为什么不起作用,也没有弄清楚何时/如何使用它的地方。但是,您可以将UseConfiguration替换为ConfigureAppConfiguration,以附加到CreateDefaultBuilder添加的默认提供者列表中。

例如:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration(builder => builder
                .AddJsonFile("foo.json"))
            .UseStartup<Startup>();