启动后台工作Asp.net 4.0应用程序

时间:2011-10-16 16:40:25

标签: asp.net

我正面临一个问题。我必须创建asp.net 4.0 Web应用程序,它应该在指定的时间间隔后检查数据库中的表并迭代所有记录。我必须在列值中保存一些“xxxx”的记录。我创建了一个类,这个类的计时器有1分钟的间隔。在tick方法上,它迭代所有记录并过滤掉要保存的数据。

我在Application_Start()中的Global.asax方法中创建了此类的实例,但此方法不会触发。请记住,此Web应用程序没有webform,甚至不是Default.aspx

我无法在Windows服务中执行此操作,因为托管服务提供商不支持Windows服务。

3 个答案:

答案 0 :(得分:2)

在IIS 7.5中,即使没有用户打开URL,您也可以使用application warmup module来自动访问您的应用程序。

另一种方法是使用像pingdom或tagbeep这样的免费保持活动检查服务。

也就是说,我通常总是使用我在Windows中的计划任务中包含的控制台应用程序执行此类后台任务,并让它不时地运行(例如每小时)。

答案 1 :(得分:1)

除非访问者启动应用程序,否则标准asp.net站点中的任何内容都不会运行。

如果你想要调度功能,你需要创建一个Windows服务或编写一个小应用程序,可以使用windows任务调度程序设置(如果你在Linux上,则使用cron)

答案 2 :(得分:1)

ASP.NET应用程序在从它们请求某些内容之前不会启动(例如,aspx页面或asmx服务)。

一旦它们启动,它们只能在该过程消失之前存在有限的时间。

我知道的唯一一种让网站无限期保持活着的方法(尽管你仍需要手动启动它)是拥有一个Cache项目(只是一个一次性对象),在到期时设置一个事件进行页面调用,然后添加一个新的缓存项,启动该过程。

这将使您的应用程序保持活动状态,以便您可以启动预定的活动。

此方法当然存在问题 - 如果发生导致进程终止的异常,或者服务器重新启动,则在手动请求页面之前,“计时器”将不会再次启动。