【问题标题】:Start background job Asp.net 4.0 application启动后台作业 Asp.net 4.0 应用程序
【发布时间】:2011-10-16 16:40:25
【问题描述】:

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

我在Global.asaxApplication_Start() 方法中创建了此类的实例,但此方法不会触发。请记住,这个 Web 应用程序没有 Web 表单,甚至 Default.aspx 也没有

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

【问题讨论】:

标签: asp.net


【解决方案1】:

在 IIS 7.5 中有一个 application warmup module,您可能会使用它来自动访问您的应用程序,即使没有用户打开该 URL。

另一种方法是使用免费的保活检查服务,如 pingdom 或 tagbeep

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      ASP.NET 应用程序在收到请求后才会启动(例如,aspx 页面或 asmx 服务)。

      一旦它们启动,它们在进程终止之前只存在有限的时间。

      我所知道的让网站无限期保持活动的唯一方法(尽管您仍然需要预先手动启动它)是拥有一个 Cache 项目(只是一个一次性对象),并在到期时设置一个事件来制作一个page 调用,然后添加一个新的缓存项,这会重新开始该过程。

      这将使您的应用程序保持活跃,以便您可以启动计划的事件。

      这种方法当然有问题——如果发生异常杀死进程,或者如果服务器重新启动,那么“计时器”将不会再次启动,直到手动请求页面。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-17
        • 2019-01-30
        • 2013-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多