我在 Windows 机器上运行 .NET,我希望每晚午夜运行一个函数。当然,由于 HTTP 无状态和 Windows 没有“cron 作业”类型的功能(据我所知),我要么必须在每晚午夜自己访问我的站点,要么只是等待用户访问该站点以依赖关于它正在更新。
我可以创建一个替代方案,在某个时间自动运行某些东西吗?
我很确定 Windows 的任务调度程序可以做 cron 可以做的大部分事情。但我可能会遗漏一些东西。
编辑:到达设置->控制面板->计划任务
如果其他答案都不适合您,这里有一个选项:
有一堆服务器监控服务会定期(如果你愿意的话,每分钟)对你的网站进行一次 http 调用。您可以在其中一些上免费获得 5 分钟的间隔。
创建一个受密码保护的页面,该页面执行您的功能(如果今天尚未完成)并将该服务指向它。
至少这样你就不需要写任何额外的东西,而且你可以放心,因为它不依赖于你的家用机器。
Jeff Attwood 在播客中的某个时候提到了一个肮脏的黑客,使用缓存过期回调来伪造这个。
他会在 .Net 的缓存中插入一个项目,过期设置为 2 小时,一旦项目过期,就会调用回调,这就是他的 cron。
我认为这是文章:
http ://www.codeproject.com/KB/aspnet/ASPNETService.aspx?display=Print
如果您问我,这很糟糕,但是对于共享托管解决方案,我想不出更好的办法。
此外,您可以向某些外部 cron 服务提供 URL,它们会定期“ping”它,例如:(这些不是免费的)
http://webcron.org/
http://www.webbasedcron.com/
这是在任务计划程序中以编程方式添加/删除和管理任务的起点。
如果你有命令行访问权限,你可以试试“at”命令,它就像一个超轻的 cron:
您还可以查看 Quartz .Net http://quartznet.sourceforge.net/这是一个调度程序
cron的windows 等效项是 At。如果您可以访问机器。
看起来GoDaddy 对此有规定,但方法不止一种:安装 Drupal 时,它需要您设置一个 cron 作业,我发现项目成员已经彻底记录了这一步。访问http://drupal.org/cron获取更多信息,并记住阅读http://drupal.org/node/31506以获取特定的 Windows 信息。如果一切都失败了,谷歌搜索“web cron job”并使用商业“cron job”服务。慎重选择,别被坑了。
我也面临同样的问题。我想在 GoDaddy 上用 MSSQL 运行 ASP.NET。但是他们没有用于 Windows 托管的计划任务。看完帖子后,我自己google了一下,找到了这个免费的网络cron作业调度器:
我刚试过,效果很好……差不多。该工作将在 1 年内到期。
希望能帮助到你。
在寻找同一个问题的答案时,我发现这篇文章 (quartz-net-with-asp-net)带有Quartz.NET的设置说明(“Enterprise Job Scheduler for .NET Platform”,来自他们的网站),甚至来自ASP.NET 应用程序。
在这里添加主要是为了参考。