我正在建立一个网站,在定时比赛上运行。每隔n小时,比赛就结束。asp.net触发事件在服务器上的时间间隔
我会在哪里把运行代码在固定的时间间隔?
我在想一个页面请求时每次检查的,但我一直在寻找另一种方式。
谢谢你的时间。
我正在建立一个网站,在定时比赛上运行。每隔n小时,比赛就结束。asp.net触发事件在服务器上的时间间隔
我会在哪里把运行代码在固定的时间间隔?
我在想一个页面请求时每次检查的,但我一直在寻找另一种方式。
谢谢你的时间。
如果你真的由您的主机你可能想尝试一下这种方法的限制:http://www.apterasoftware.com/Blog/Post/09-04-09/Scheduled_ASP_NET_Task_ASP_NET_Cron_Jobs.aspx
这是一个黑客攻击的一位,但节省了托管你的钱! :)
如果你有你的数据库服务器的完全访问权限,你可以做一些简单的像创建一个可在1小时一班调用,将设置活动比赛ID的过程中,关闭其中的其他数据库程序SQL代理作业可以工作。
我GoDaddy的托管。数据库访问是有限的。 – 2009-08-11 02:50:25
ASP.NET是用来帮助您创建它们投放在每个请求的网页的技术。因此,它不适合离散定时执行。有是解决方案(例如检查每个请求,如你所说),但为什么不使用C#控制台或WinForms应用程序创建一个简单的定时过程在您的服务器上运行,使用相同的数据库?
我对Web服务器的访问权限有限。有没有我可以使用的后台线程类型实现? – 2009-08-11 02:51:07
我认为这将是非常适合在一个单独的DLL跟踪的时间为比赛做,然后对请求请求asp.net页面,如果时间到了。我认为试图在asp.net页面中跟踪这个将证明是非常困难和难以维护的。
一对夫妇的想法:
我喜欢你的第一个想法,第二个似乎靠不住: - )感谢您的答复:) – 2009-08-12 06:25:30
以下内容来自Jeff Attwood的Easy Background Tasks in ASP.NET,并转入Global.asax。我正在计划从Active Directory中更新一些用户信息。目前,它被硬编码为每60秒重复一次,但会作为配置设置推入到Web.config中。适用于我的目的,我的请求数量比Stack Overflow少很多,所以我相信这将是一个很好的长期解决方案。
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
private static readonly string UPDATE_USER_INFO_KEY = "UpdateUserInfo";
private static CacheItemRemovedCallback OnCacheRemove = null;
void Application_Start(object sender, EventArgs e)
{
AddTask(UPDATE_USER_INFO_KEY, 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 key, object v, CacheItemRemovedReason r)
{
if (UPDATE_USER_INFO_KEY.Equals(key))
{
try
{
new Search().UpdateUserInfo();
}
catch (Exception ex)
{
logger.Error("UpdateUserInfo threw an exception: {0} {1}", ex.Message, ex.StackTrace);
}
}
AddTask(key, Convert.ToInt32(v));
}
太棒了!看看如何使用谷歌差异产生不同的结果。 感谢:-) – 2009-08-11 03:03:07
新的链接,该博客: http://www.apterasoftware.com/Blog/Post/09-04-09/Scheduled_ASP_NET_Task_ASP_NET_Cron_Jobs.aspx – 2010-06-23 14:51:10