2

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?

user229044
241k41 gold badges345 silver badges349 bronze badges
asked Jan 16, 2014 at 4:24
3

2 Answers 2

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.

answered Jan 16, 2014 at 5:17
Sign up to request clarification or add additional context in comments.

1 Comment

With Azure WebJobs you now can add long running processes. See my tutorial asp.net/aspnet/overview/developing-apps-with-windows-azure/….
0

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

answered Jan 17, 2014 at 0:38

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.