I need to run a task repeatedly on an ASP.NET MVC site; it needs to run every time interval (Interval doesn\'t matter).
I achieved this by setting a backgro
I know you've stated that:
This needs to run in the MVC site
However I think this is the wrong place for doing what you're trying to acheive.
Personally I'd set this up as a Windows Service and have the service check the database, compile the email as required, and add the email to a queueing service. The email service would then be seperate from this and would dispatch the emails at some interval.
What's stopping you at present from using another method than embedding this in your MVC site?
Stackoverflow itself uses (or at least used to use) a cunning way of doing this. See here: http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/
In brief, you do this:
At startup, add an item to the
HttpRuntime.Cache
with a fixed expiration.When cache item expires, do your work, such as WebRequest or what have you.
Re-add the item to the cache with a fixed expiration.