如何在Windows Server上模拟cron作业?
我在一个窗口框中运行.NET,我想在午夜每天晚上运行一个函数。 当然,由于HTTP无状态和Windows没有“cron job”types的function(我知道),我要么必须每晚在午夜访问我的站点,要么等待用户访问站点正在更新。
有没有其他的办法可以在某些时候自动运行?
谢谢
如果没有其他的答案适合你,这里有一个选项:
有一大堆的服务器监控服务,将会定期向您的网站发起http呼叫(如果您愿意的话,每分钟一次)。 一些人可以免费得到5分钟的时间间隔。
创build一个密码保护的页面,执行你的function(如果它还没有完成今天),并指出该服务。
至less这样你就不必额外写任何东西,而且你可以轻松地知道它不依赖于你的家用机器。
我很确定Windows的任务调度程序可以完成cron可以做的大部分事情。 但是我可能会错过一些东西。
编辑 :达到设置 – >控制面板 – >计划任务
杰夫·阿特伍德在播客的某个时候提到了一个肮脏的黑客使用caching过期callback来伪造这个。
他会在.Net的caching中插入一个项目,过期时间设置为2小时,一旦项目过期,就会调用一个callback函数,这就是他的cron。
我认为这是文章:
http://www.codeproject.com/KB/aspnet/ASPNETService.aspx?display=Print
如果你问我,这很糟糕,但对于一个共享的托pipe解决scheme,我想不出什么更好的。
此外,还有外部的cron服务,你给一个URL,他们会定期“ping”,如:(这些不是免费的)
http://webcron.org/
http://www.webbasedcron.com/
这是以编程方式在Task Scheduler中添加/删除和pipe理任务的起点。
如果你有命令行访问,你可以尝试“at”命令,这就像一个超轻型的cron:
你也可以看看Quartz .Net http://quartznet.sourceforge.net/这是一个调度器;
相当于cron的窗口是At 。 如果你有机会访问。
使用Timer类创build一个定时器,定期调用要执行的方法。
可以在Global类的Application_Start事件中启动一个静态定时器。 由于计时器使用间隔而不是绝对时间,因此必须计算直到午夜的时间间隔,并相应地设置“ 间隔”属性。
它看起来像GoDaddy有这方面的规定 ,但有一个方法来做到这一点:当你安装Drupal需要你设置一个cron作业,我发现项目成员已经logging了这一步。 有关更多信息,请访问http://drupal.org/cron ,并记得阅读http://drupal.org/node/31506以获取特定的Windows信息。; 如果一切都失败了,谷歌的“networkingcron工作”,并使用商业“cron工作”服务。 仔细select,不要被扯掉。
我也面临同样的问题。 我想在GoDaddy上用MSSQL运行ASP.NET。 但是他们没有Windows主机的任务。 阅读后,我做了我自己的谷歌,并发现这个免费的networkingcron作业调度:
我只是尝试,它完美的作品…差不多。 这项工作在1年后到期。
希望它有帮助。
如果你使用dotnetnuke,试试这个: http ://www.wwwcoder.com/tabid/68/type/art/parentid/224/site/6401/default.aspx
寻找同一个问题的答案,我发现这个post(quartz-net-with-asp-net)带有Quartz.NET的设置指令(“.NET平台的企业Job Scheduler”,来自他们的网站),甚至从ASP.NET应用程序。
在这里添加它主要是为了参考。