10
votes

I need to run long running background tasks in my asp.net core application. I know of Azure Webjobs and other out of process techniques but I'd rather keep the solution simple and runs those tasks directly in the asp.net core process. I use Kestrel and the application is hosted in IIS.

I understand that IIS will occasionally recycle the IIS process. Will it also recycle the asp.net core process?

3

3 Answers

3
votes

Asp.Net Core < 2.2

Asp.net Core runs in a separate process dotnet.exe even when it is hosted in IIS. But it doesn't mean that it runs as an independent process. IIS still responsible for Asp.net core process (dotnet.exe) life cycle through the AspNetCoreModule.

So, answer is yes, IIS will also recycle the asp.net core process

Asp.Net Core >= 2.2

Asp.Net Core 2.2 has in-process hosting support on IIS in addition to out-of-process hosting model that was before. It seems it is just an optimization that allows to avoid the additional cost of reverse-proxying requests over to a separate dotnet process. IIS will recycle application pool with Asp.net Core application

1
votes

I have do a experiment use ' IApplicationLifetime applicationLifetime ' like aspnet Golbal.aspx

When the iis application recycle , the registerd 'ApplicationStopping' be triggered.

SO i will belive the https://github.com/aspnet/KestrelHttpServer/issues/1040#issuecomment-267506588

-1
votes

Nope, It would not. IIS application pool only takes care of w3wp.exe process.

ASP.NET Core is hosted by Kestrel process, and IIS is just a reverse proxy in front of it.