我正在尝试在我的服务器上自动执行某个进程。我希望我的程序每24小时运行一次,时间是凌晨12点00分。所以我实现了这里建议的方法:https://stackoverflow.blog/2008/07/18/easy-background-tasks-in-aspnet/
当我在本地运行我的程序时,它工作正常(即它在凌晨12:00:00运行)但是,当我在服务器上运行代码时,我看到Cache被随机删除(例如7:44) :03 PM,6:48:08 AM,1:33:47 PM,4:50:35等等)这是因为服务器管理缓存的方式不同,或者我错过了什么?
这是我在Global.asax.cs中的代码:
protected void Application_Start()
{
// Some configuration here
AddTask("NextRoundPreparer");
}
private void AddTask(string name)
{
DateTime today = DateTime.Today;
DateTime tomorrow = today.AddDays(1);
OnCacheRemove = new CacheItemRemovedCallback(CacheItemRemoved);
HttpRuntime.Cache.Insert(name, name, null,
tomorrow, Cache.NoSlidingExpiration,
CacheItemPriority.NotRemovable, OnCacheRemove);
}
public void CacheItemRemoved(string key, object value, CacheItemRemovedReason reason)
{
//Do some work here
AddTask(key);
}