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?
-
This might help stackoverflow.com/questions/7913034/…Seano666– Seano6662014年01月16日 04:29:57 +00:00Commented Jan 16, 2014 at 4:29
-
Or maybe this stackoverflow.com/questions/19965342/…sh1rts– sh1rts2014年01月16日 04:30:25 +00:00Commented Jan 16, 2014 at 4:30
-
In Azure, a cloud service (worker role) is the most robust mechanism. In WAWS, you can use the WebJobs SDK for long running asynch processes. See asp.net/aspnet/overview/developing-apps-with-windows-azure/…RickAndMSFT– RickAndMSFT2014年01月23日 01:04:49 +00:00Commented Jan 23, 2014 at 1:04
2 Answers 2
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.
1 Comment
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
Comments
Explore related questions
See similar questions with these tags.