升级到.Net Core 2.1后,IWebHost.Build()未调用Startup.Configure()

fre*_*shr 5 c# .net-core asp.net-core

我已经在.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();
    }
Run Code Online (Sandbox Code Playgroud)

在我升级框架之前,它一直运行良好,可以实例化Startup并正确调用ConfigureServicesand Configure方法。

现在,尽管Startup正在实例化,Configure但不再被调用。(不会引发任何异常。)

我意识到应用程序启动中还有很多其他代码。但是,我唯一要做的就是将.Net Core SDK从2.0更新到2.1。

也许有人知道可能会发生什么变化或我可以调查什么?

fre*_*shr 4

事实证明,从.Net Core 2.0开始,启动顺序发生了变化。我在 GitHub 上没有找到任何文档或讨论来证实这一点,但我自己的测试已经很清楚了。

以前是被Startup.Configure打电话的WebHostBuilder.Build()。但这个调用现在被推迟到WebHost.Run()[或者WebHost.Start()如果你正在使用它]。

我设法通过注入IApplicationLifetime和注册回调来执行数据库迁移等来解决这个问题。对于它的价值,我认为现在的启动序列非常复杂,如果有一些更简单的钩子来运行代码就好了必要的要点。

感谢所有发表评论或提供建议的人。