IWebHost.Build () не вызывает Startup.Configure () после обновления до .Net Core 2.1 - PullRequest
0 голосов
/ 01 июня 2018

Я работаю над сайтом в .Net Core 2.0 уже несколько месяцев.Я только что обновился до .Net Core 2.1, и теперь метод Startup.Configure() не вызывается.

В моем классе Program есть следующий код, который создает IWebHost:

    private static IWebHost BuildWebHost(string[] args)
    {
        return WebHost
            .CreateDefaultBuilder()
            .ConfigureAppConfiguration(LoadAppConfiguration)
            .UseStartup<Startup>()
            .Build();
    }

До тех пор, пока я не обновил фреймворк, он работал отлично, создавал экземпляры Startup и правильно вызывал методы ConfigureServices и Configure.

Теперь, хотя создается экземпляр Startup, Configure больше не вызывается.(Нет исключений.)

Я понимаю, что в моем приложении запускается много другого кода.Но единственное, что я сделал, - это обновил .Net Core SDK с 2.0 до 2.1.

Возможно, у кого-то есть идея, что могло измениться или что я могу исследовать?

1 Ответ

0 голосов
/ 02 июня 2018

Оказывается, что последовательность запуска изменилась с .Net Core 2.0.Я не нашел никакой документации или обсуждения на GitHub, чтобы подтвердить это, но мое собственное тестирование было ясным.

Раньше Startup.Configure вызывали WebHostBuilder.Build().Но этот вызов теперь откладывается до WebHost.Run() [или WebHost.Start(), если вы используете это].

Мне удалось обойти его, введя IApplicationLifetime и зарегистрировав обратный вызов для выполнения миграции моей базы данных и т. Д.Что бы это ни стоило, я думаю, что последовательность запуска сейчас довольно запутанная, и было бы неплохо иметь несколько более простых хуков для запуска кода в необходимых точках.

Спасибо всем, кто прокомментировал или предложил свои предложения.

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