创建主机后添加配置提供程序

时间:2020-02-26 14:40:41

标签: configuration host asp.net-core-3.1

我们目前在一个客户的内部运行一个项目。他们想添加一些敏感的配置参数,但无法使用Azure,因此我考虑添加数据库配置提供程序。为此,我添加了一个包含配置的表并添加了迁移。我使用DbContext.Database.Migrate();

执行此迁移

现在我有一个问题,我添加了一个自定义配置提供程序,但是由于.Net Core配置的工作方式,它只能在执行迁移之前初始化。

基本上,我的Main方法如下:

public static int Main(string[] args)
{
    //Get IConfigurationBuilder and add appsettings.json
    var builder = ConfigurationHelper.GetBuilder().InitializeConfiguration();
    //Create Serilog logger
    CreateLogger(builder.Build());

    try
    {
        Log.Information("Starting host");
        var host = CreateHostBuilder(args).Build();
        host.MigrateDatabase();
        host.InitializeDatabase();
        //The problem are the next two lines. 
        //builder.AddDbConfigurationProvider(options => options.UseSqlServer("DbConnString")); 
        //builder.Build();
        host.Run();
        return 0;
    }
    catch (Exception ex)
    {
        Log.Fatal(ex, "Host terminated unexpectedly");
        return 1;
    }
    finally
    {
        Log.CloseAndFlush();
    }
}

因此,在运行迁移之前已添加了配置提供程序。但是,由于我是通过迁移添加配置表的,因此将导致异常。我不能使用SQL脚本或任何其他方式来运行迁移,但我唯一的选择是使用代码内。

我该如何进行这项工作?

0 个答案:

没有答案