我们面临一个本地问题,当使用IIS Express时,即使不启动浏览器,应用程序启动后也会立即调用dataCopy:{}, dataOriginal:{}
类的方法。 (这是Db迁移)
但是,当将应用程序部署到IIS Startup
类时,仅在首次请求站点后才运行。
难怪是IIS / AspNetCore模块吗?如果是的话,除了在部署后进行查询外,是否还可以强制启动Kestrel?
答案 0 :(得分:0)
好吧,魔法由多个parts组成:
首先,我们应该有一个正在运行的应用程序池。通过将池的“启动模式”设置为SELECT DATE(any_time_field_containing_milliseconds/ 1000) FROM mytable;
(默认为AlwaysRunning
)进行配置。也请参见此question。
第二,我们必须将网站的设置OnDemand
设置为Preload Enabled
。 (网站->高级设置)。
第三,我们在web.config文件中指定了applicationInitialization部分。
此article讲述了如何使用PowerShell执行这些操作。
注意:我需要对应用程序进行预热,因为我在应用程序启动时运行数据库迁移。在部署到多个实例时,我们使用滚动部署来避免并发迁移。
该过程大致如下:
它引入了短服务停机时间,尽管现在对我们来说很好。