让ASP.NET页面在一段时间内运行的最佳方法?

时间:2009-05-07 17:35:02

标签: asp.net

我制作了这个应用程序,需要从fogbugz获取时间条目并将它们发布到basecamp,但是现在它必须手动运行。我需要每周或每晚运行一次,这样做的最佳方法是什么?

5 个答案:

答案 0 :(得分:2)

创建scheduled task

答案 1 :(得分:1)

IMO,最好的方法是编写一个执行计划任务的Web服务。并开发一个Windows服务,根据您的日程安排调用您的Web服务。

答案 2 :(得分:1)

请求ASP.NET页面的客户端是什么?它对响应有何作用?最有可能的答案是没有客户,也没有太多回应。

撇开“为什么它是一个ASP.NET页面然后”的响应。一些常见的方法是: -

  1. 使用计划任务,但需要进行外部配置。
  2. 不要使用ASP.NET,而是创建服务来执行任务,但更多的是外部配置
  3. 可以包含在Web应用程序中的方法是将一些虚拟对象添加到具有指定到期时间的缓存中,不允许缓存自己的算法进行任意删除,并在删除项目时设置Call​​back方法

    一种简单但极其缺陷的方法是在您要执行操作时设置项目的到期时间。然而,更好的方法是使用较短的过期间隔,然后在每次到期时检查数据库记录以查看操作是否需要在高速缓存中执行和/或重新建立项目。

    您可能会以事务方式执行此DB测试,并使用一个标志来指示其正在处理。这种方法可以让Web Gardens和Farms不要互相绊倒,试图做同样的任务。

    在应用程序启动时,您还可以检查数据库,以便在首次在缓存中建立项目之前查看任务是否需要执行。

答案 3 :(得分:0)

我会创建一个小型Windows服务,只使用简单的WebRequest加载页面。另一种方法是在global.asax的Application_Start事件中创建后台线程。这种方法有很多链接,例如:

What are some best practices for managing background threads in IIS?

答案 4 :(得分:0)

++关于Canavar和gattaca的评论,但我会避免背景线程问题。我听说有时这些线程可以回收利用,因为你的应用程序没有重新启动就会陷入虚无。我在这里错了。无论哪种方式更少的内存和稳定的性能写一个Windows服务...除非你在一个不允许你安装服务的共享主机上。