Добавление поставщика конфигурации после того, как хост был создан - PullRequest
0 голосов
/ 26 февраля 2020

В настоящее время у нас есть проект, запущенный в помещении у одного из наших клиентов. Они хотят добавить некоторые конфиденциальные параметры конфигурации, но не могут использовать Azure, поэтому я подумал о добавлении поставщика конфигурации базы данных. Для этого я добавил таблицу, которая содержит конфигурации, и добавил миграцию. Я выполняю эту миграцию с DbContext.Database.Migrate();

Теперь у меня проблема с тем, что я добавил провайдера нестандартной конфигурации, но из-за способа. Net Конфигурация ядра работает, ее можно инициализировать только до того, как я выполню наши миграции.

По сути, мой метод 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 сценарии или что-либо еще для запуска миграций, единственное, что у меня есть, - это in-code.

Как я могу заставить эту работу работать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...