I was just about to do something like this.
What should happen is a separate thread that needs to be released from Global.asax.
void Application_Start(object sender, EventArgs e) {
You will also need to consider that the application pool will be repeatedly processed, so make sure that it is based on a specific time, and that you also have a database in which the 3am application pool is stored, running or not running, which is very likely.
You will also need to have some form of maintaining the service, as if your site is inactive, the application pool will not be restarted until someone hits it.
source share