Windows Server 2016 IIS-应用程序并非始终运行,无法立即启动以及无法启动两次

Tho*_*mas 5 iis windows-server-2016 asp.net-core

我有一个通过Windows Server 2016上的IIS运行的Wep API .NET核心应用程序。

该应用程序在监视其他服务上的事件等方面,所做的不仅是回复其API。

我有3个问题:

  • 当我通过IIS启动或重新启动应用程序时(或发布更新时),直到有请求到来之前,它不会执行任何操作。然后该应用程序开始运行。有没有办法强制应用立即运行?

  • 该应用程序执行了大量的后台处理,我发现有时它根本停止执行任何操作。它在计时器上有未执行的任务,等等。如果我不断将工作输出到记录器,则不会发生

  • 应用启动时,它将向日志发送很多信息,在这段时间内,我看到它启动了两次!它开始显示一个值得记录的页面,然后再次开始。但这很奇怪:应用启动时,会随机选择一个“可爱的名称”,以便我们区分实例,而在原始启动和第二次启动期间,它是相同的名称,因此表明它是相同的实例,但是初始化被第二次调用。

关于应用程序在IIS容器中运行的方式是否有特定的解释,可以解释这些行为?


完成更多搜索后,建议的选项是作为服务运行,但就我而言是不可能的,因此我仍然需要使用IIS作为反向代理来制作.Net Core Kestrel应用程序。

尽管有下面的评论,但我仍然没有找到任何好的解决方案,除非定期ping通该站点以使其保持活动状态。

Lud*_*dwo 4

在应用程序池上将“启动模式”设置为“AlwaysRunning”,并在网站本身上将“预加载已启用”设置为“true”。通过这两个设置,应用程序将立即启动。

编辑:您必须在 IIS 上启用“应用程序初始化”模块

  • 我在 WS2016 上这样做了,它只在第一个查询上开始执行 (2认同)