IIS是否会回收asp.net核心进程?

IIS是否会回收asp.net核心进程?,iis,asp.net-core,.net-core,kestrel-http-server,Iis,Asp.net Core,.net Core,Kestrel Http Server,我需要在asp.net核心应用程序中运行长时间运行的后台任务。 我知道Azure Webjobs和其他进程外技术,但我宁愿保持解决方案简单,并直接在asp.net核心进程中运行这些任务。 我使用Kestrel,应用程序托管在IIS中 我知道IIS偶尔会回收IIS进程。它还会回收asp.net核心进程吗?不,不会。IIS应用程序池仅负责w3wp.exe进程 ASP.NET内核由Kestrel进程托管,IIS只是它前面的一个反向代理。我做了一个实验 像aspnet Golbal.aspx一样使用“i

我需要在asp.net核心应用程序中运行长时间运行的后台任务。 我知道Azure Webjobs和其他进程外技术,但我宁愿保持解决方案简单,并直接在asp.net核心进程中运行这些任务。 我使用Kestrel,应用程序托管在IIS中


我知道IIS偶尔会回收IIS进程。它还会回收asp.net核心进程吗?

不,不会。IIS应用程序池仅负责w3wp.exe进程

ASP.NET内核由Kestrel进程托管,IIS只是它前面的一个反向代理。

我做了一个实验 像aspnet Golbal.aspx一样使用“iaapplicationlifetime applicationLifetime”

当iis应用程序回收时,注册表将显示“ApplicationStopping” 被触发


所以我相信Asp.Net核心<2.2

Asp.net核心
在单独的进程
dotnet.exe
中运行,即使它托管在
IIS
中。但它并不意味着它作为一个独立的过程运行
IIS
仍然负责
Asp.net core
进程(
dotnet.exe
)的整个生命周期
AspNetCoreModule

所以,答案是肯定的,IIS还将回收asp.net核心进程

Asp.Net核心>=2.2


Asp.Net Core 2.2除了以前的
进程外
托管模型外,还支持IIS上的
进程内
托管。这似乎只是一种优化,可以避免将请求反向代理到单独的dotnet进程的额外成本。IIS将使用Asp.net核心回收应用程序池应用程序

Kestrel进程将由apppool用户生成。回收过程中会发生什么?iis不会在回收过程中杀死apppool用户的所有进程吗?@pepo你可以做一些实验。我相信红隼的过程仍然存在。IIS不会“杀死apppool用户的所有进程”,永远不会。它只是取代了工作进程(w3wp.exe)。嗯,我不知道:@Clement我相信大卫遗漏了后面的细节。如果我们仔细划分什么是IIS,什么是ASP.NET核心,那么IIS根本不知道什么是Kestrel。根据他的话,我只能猜测插入IIS工作进程的ASP.NET核心模块在回收步骤中劫持,并向Kestrel发送退出信号。幸运的是,该模块在GitHub上是完全开源的,因此我们可能能够检查代码并了解如何操作。可观察到的结果似乎表明了相反的情况(至少在.net core 1.1中),即dotnet进程被关闭。