Bra*_*osh 7 asp.net maintenance
给定一个ASP.NET应用程序,我需要定期运行维护过程(每天,每小时等).
如果不依赖于服务器上的计划任务等外部流程(假设我无法访问服务器 - 共享托管环境),最好的方法是什么.
sec*_*ean 11
这是StackOverflow的方式:
private static CacheItemRemovedCallback OnCacheRemove = null;
protected void Application_Start(object sender, EventArgs e)
{
AddTask("DoStuff", 60);
}
private void AddTask(string name, int seconds)
{
OnCacheRemove = new CacheItemRemovedCallback(CacheItemRemoved);
HttpRuntime.Cache.Insert(name, seconds, null,
DateTime.Now.AddSeconds(seconds), Cache.NoSlidingExpiration,
CacheItemPriority.NotRemovable, OnCacheRemove);
}
public void CacheItemRemoved(string k, object v, CacheItemRemovedReason r)
{
// do stuff here if it matches our taskname, like WebRequest
// re-add our task so it recurs
AddTask(k, Convert.ToInt32(v));
}
Run Code Online (Sandbox Code Playgroud)
详细信息:http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/