How to implement a very long running background ta

2019-02-26 10:31发布

I'm writing a WebAPI application to perform a number of long running background processing tasks.

I'm noticing, that my test data loading task, is being killed by System.Threading.ThreadAbortException, even after I disable the pool recycling in IIS. I know, that there is a way to run a very long running (a few hours long) background tasks within a Web application, but, I just do not know how exactly that is done - either some specific configuration settings, a coding technique, a Wen.config parameter, etc... Can anyone share some practical way of doing this, please?

2条回答
放我归山
2楼-- · 2019-02-26 10:48

It looks like the best answer to my problem is to combine a self-hosted WebAPI with TopShelf windows service implementation. This way I can write my WebAPI controller code the usual way, and those long running tasks will not get killed by IIS.

Thanks everyone for your help!

-Eugene

查看更多
We Are One
3楼-- · 2019-02-26 11:01

You DON'T want to use IIS/ASP.Net to run a long running process, it was not designed for that.

Only use it for the initial call in Web.API to kick off your service by using MSMQ or inserting a row into a table that tells your separate process what to do.

Create a separate application - either a Console application, where you would use Windows Scheduler to periodically run the app and check for new work items; or a Windows Service, that periodically checks your work item store for work items. You can then use the ThreadPool, etc to asynchronously run your process.

查看更多
登录 后发表回答