2011-11-24 68 views
3

据我所知,quartz.net调度程序在global.asax中启动。也就是说,除非有人访问该网站,否则quartz.net调度程序不起作用。这不是一种安全的方法,因为调度程序线程可以通过重新启动服务器或IIS池中的进程被终止来终止,调度程序线程将保持未启动状态,直到有人再次访问网站。Web应用程序如何在共享主机上实现计划任务?

我们可以使用Windows调度程序来解决这个问题。但我们正在使用共享主机,我们无法在主机上编写服务或SQL Server作业或安排Windows任务。

如果我们确定我们的网站每天都有访问,这不是问题。 如果不是,即使没有人访问我们的网站几天,即使服务器重新启动,我们如何确保网络调度程序始终工作?

+0

这些服务可以帮助:http://www.onlinecronservices.com/ – Kizz

回答

1

最简单的方法是让服务器上的计划任务触发您的工作(通过请求页面)。如果你没有可以做到这一点的服务器,你可以使用pingdom之类的东西以n个间隔点击一个页面。

如果你确实有服务器来做到这一点,你也可以编写一个服务 - 但对于一些微不足道的事情,我只是使用一个计划任务。

+1

谢谢您的解答。 **但我们使用共享主机,我们无法编写服务或安排任务**。 – Max

+0

您可以使用像pingdom.com这样的网站在n个内部点击一个页面(触发您的工作)。 –

2

您应该安装quartz.net作为Windows服务,并通过远程访问您的Web应用程序。这将保证调度程序始终运行。说明建立调度作为Windows服务在这里: Getting Started with Quartz.Net Part 1

+0

最好的办法是将Quartz.Net作为单独的Windows服务安装。如果你真的做不到,那么石英可能不适合这里的工作。你可能也想检查这个[简单的解决方案](http://stackoverflow.com/)。 – yorah

+0

对不起,我之前评论中的剪贴板中存在错误的链接。这里是正确的链接:http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/ – yorah

相关问题