【问题标题】:Asp.NET Web application: run a method every x hours (long term)Asp.NET Web 应用程序:每 x 小时运行一个方法(长期)
【发布时间】:2016-11-10 23:47:41
【问题描述】:

是否可以在 Web 应用程序(当然是服务器端)中自动运行每 x 分钟/小时运行一次的方法?

简化代码:

public class Task
{
    public string Name { get; set; }
    public DateTime Deadline { get; set; }
    ...
}

案例:每个任务都有截止日期,如果截止日期临近,我想生成一封邮件

有一些答案,例如hereSystem.Threading 或将功能嵌入到构造函数中。但是我怎样才能确保它可以工作几个月而不被调用呢?

谢谢!

【问题讨论】:

  • Windows 服务?
  • 创建一个独立于您的 Web 应用程序的 Windows 服务。
  • 使用窗口服务。 IIS 不保证工作进程在没有请求的情况下正在运行。

标签: c# asp.net sql-server web-applications


【解决方案1】:

我最喜欢的工具是Hangfire。它可以让您安排任务,您的任务如下所示:

RecurringJob.AddOrUpdate(() => CheckIfDeadlineIsApproaching(), Cron.Hourly);

与 cmets 中的建议不同,这也不需要 Windows 服务,这使得该解决方案更加容易。

【讨论】:

    【解决方案2】:

    您应该将调度程序放在应用程序启动中。我认为Global.asax.cs文件

    【讨论】:

    • 谁投我反对票,你可以查看任何 lib dos 以确保运行任何持久进程,它应该放在 web 应用程序的应用程序启动中。
    猜你喜欢
    • 1970-01-01
    • 2015-02-12
    • 2013-01-16
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    相关资源
    最近更新 更多