Kestrel是否由IIS AspNetCore模块立即启动?

时间:2019-02-27 13:24:10

标签: iis asp.net-core ef-migrations kestrel-http-server

我们面临一个本地问题,当使用IIS Express时,即使不启动浏览器,应用程序启动后也会立即调用dataCopy:{}, dataOriginal:{}类的方法。 (这是Db迁移)

但是,当将应用程序部署到IIS Startup类时,仅在首次请求站点后才运行。

难怪是IIS / AspNetCore模块吗?如果是的话,除了在部署后进行查询外,是否还可以强制启动Kestrel?

1 个答案:

答案 0 :(得分:0)

好吧,魔法由多个parts组成:

首先,我们应该有一个正在运行的应用程序池。通过将池的“启动模式”设置为SELECT DATE(any_time_field_containing_milliseconds/ 1000) FROM mytable; (默认为AlwaysRunning)进行配置。也请参见此question

第二,我们必须将网站的设置OnDemand设置为Preload Enabled。 (网站->高级设置)。

第三,我们在web.config文件中指定了applicationInitialization部分。

article讲述了如何使用PowerShell执行这些操作。


注意:我需要对应用程序进行预热,因为我在应用程序启动时运行数据库迁移。在部署到多个实例时,我们使用滚动部署来避免并发迁移。

该过程大致如下:

  • 停止所有实例
  • 在等待期间按顺序向每个实例部署新版本

它引入了短服务停机时间,尽管现在对我们来说很好。