在 IIS 8+ 上托管(非核心)ASP.net 站点时,可以利用IIS 应用程序初始化模块在 IIS 启动时主动初始化(“预热”)Web 应用程序(或者,我相信,当应用程序池被回收时)。据我所知,在 IIS 上托管 .net Core 应用程序时这是不可能的。
我还注意到,在 IIS 上托管 .net Core (1.1) 应用程序时,dotnet.exe进程 (Kestrel) 作为应用程序池回收事件的一部分被终止。此过程仅在发出第一个新请求时才重新启动。
我问以下问题是因为我正在使用 Hangfire (Core) 和一个经常性的后台作业,并且希望在没有人长时间访问该站点时仍然执行该作业。
在 IIS 上托管核心应用程序时,使用计划的应用程序池回收功能有什么意义吗?我能找到的唯一参考是 Github repo 上的一个问题。
如果是这样,是否可以在应用程序池回收后自动初始化站点或启动 Kestrel(通常默认情况下每 29 小时发生一次)。
iis hangfire kestrel-http-server asp.net-core asp.net-core-2.0
这篇博客文章解释了如何在IIS中托管.Net Core网站时,在第一个请求进入IIS之前,该网站代码实际上不会运行:
这正是我所看到的行为,一旦第一个请求进入,一切便开始运行。我有一个用例,我真的需要在IIS启动后立即启动网站代码。有没有一种方法可以从网站内部以编程方式执行此操作,或者在配置中使用某些方法,因此我不必记住每次IIS重新启动时都要对我的网站执行ping操作?谢谢。