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

问题描述 投票:0回答:1

我们正面临一个本地问题,当使用IIS Express时,即使没有启动浏览器,也会在应用程序启动后立即调用Startup类的方法。 (这是Db迁移)

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

它是IIS / AspNetCore模块的罪魁祸首吗?如果是,除了在部署后进行查询之外,是否可以强制启动Kestrel?

iis asp.net-core ef-migrations kestrel-http-server
1个回答
0
投票

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

首先,我们应该有一个正在运行的应用程序池。这是通过将池的启动模式设置为AlwaysRunning(默认为OnDemand)来配置的。看到这个question也是如此。

其次,我们必须将网站的设置Preload Enabled设置为true。 (站点 - >高级设置)。

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

这个article告诉我们如何使用PowerShell执行这些操作。


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

该过程大致如下:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.