【问题标题】:How do I schedule tasks in ASP.net?如何在 ASP.net 中安排任务?
【发布时间】:2013-03-30 16:36:03
【问题描述】:

我正在用 ASP.net (C#) 开发一个网站,并且有以下要求:

该网站应每晚从 RSS 提要中获取数据,执行一些计算并使用计算值更新数据库。如何在共享托管环境中实现这一点?

我通常得到的答案是拥有一个 Windows 服务来执行此操作,但我不能使用它,因为我不允许在我的共享主机环境中运行 Windows 服务。

我发现的另一种选择是使用 https://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/ 中描述的 HttpRuntime.Cache

但是,这种方法似乎有很多缺点。 还有其他方法吗?

【问题讨论】:

    标签: asp.net scheduled-tasks


    【解决方案1】:

    Windows 计划任务

    如果您没有任何专用资源,则在共享主机中是不可能的。非常有限。

    使用诸如 Windows 计划任务和控制面板功能之类的技巧并不是很好的解决方案。他们大部分时间都很糟糕,因为今年他们让我们头疼。

    调度网络服务

    您可以在共享主机中使用ATrigger调度服务。 .Net library 也可用于创建计划任务而无需开销。

    免责声明:我是 ATrigger 团队的一员。这是一个免费软件,我没有任何商业目的。

    【讨论】:

      【解决方案2】:

      在一些(大多数?)共享主机提供商,至少我使用过的那些,他们允许您通过他们的控制面板安排任务。我知道 discountasp.net 和 rackspace。

      如果您的提供商确实具有该功能,请让它在指定时间调用/加载某个 asp.net 网页,然后执行其工作。对于很多小任务,这将是阻力最小的路径。

      如果它不提供该功能,并且您不愿意切换提供程序,则您始终可以从不在您的 ISP 的计算机上运行计划任务(使用 Windows 服务器中的内置任务),只要因为您可以从中访问数据库。我过去也使用过这种方法。任何在正确时间可靠启动的机器都可以。

      【讨论】:

      • 如果您无法在提供商处安排任务,您也可以在其他地方安排一个任务,该任务仅通过网络请求 asp.net 页面(因此您不需要外部数据库访问)。
      • 感谢布伦南和瑞恩。我认为这种在另一台机器上使用调度程序来请求 asp.net 页面的方法对我有用。
      • 请注意,像这样的 URL 目标是 DOS 攻击的靶心。在查询字符串中做一些哈希至少可以帮助解决这个问题。只是需要注意的事情。
      猜你喜欢
      • 2013-08-17
      • 2012-05-02
      • 2021-12-05
      • 2011-05-15
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 2022-07-11
      相关资源
      最近更新 更多