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

时间:2018-05-31 21:48:13

标签: c# asp.net-core .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();
    }

在我升级框架之前,这非常有效,实例化Startup并正确调用ConfigureServicesConfigure方法。

现在,虽然Startup正在实例化,但Configure不再被调用。 (没有例外被抛出。)

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

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

2 个答案:

答案 0 :(得分:4)

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

过去Startup.Configure调用了WebHostBuilder.Build()。但是,此调用现在推迟到WebHost.Run() [或WebHost.Start(),如果您使用的话。“

我设法通过注入IApplicationLifetime并注册回调来执行我的数据库迁移等来解决它。对于它的价值,我认为启动顺序现在非常复杂,如果有一个很好的话在必要的点上运行代码的几个简单的钩子。

感谢所有评论或提出建议的人。

答案 1 :(得分:1)

对我来说,答案是重启visual studio。