在C#.NET MVC应用程序中执行预定任务

我正在尝试为我的.NET MVC应用程序实现一个逻辑,我将在以下基础上触发我的应用程序中的计划任务:

First scheduled task to run from 00 am to 1 am in the morning Second scheduled task to run from 1:10 am to 08:00 am in the morning Third scheduled task to run from 8:15 am to 11:15 pm every 1 hour 

这将每年365天每天重复……

我可以使用.NET或外部库中的哪种机制以最简单的方式实现这一点?

我试图用Quartz.NET库实现它,但我根本不喜欢它,我有两个计划的任务运行,其中一个在预定的时间内根本不会运行…

出于多种原因,您不希望在Web应用程序中执行长时间运行和重复出现的后台任务。 您可以浏览following blog post ,其中非常清楚地概述了它们。

我建议您将此逻辑移动到单独的Windows服务或甚至控制台应用程序中,该应用程序的运行可以使用Windows任务计划程序以所需的时间间隔进行调度。

这样做的好处是,您将从执行长期运行的任务中卸载Web应用程序,这将耗费您的Web服务器中的宝贵资源。 当然,web服务器和工作服务可以共享公共的集中式数据存储区或消息传递层,以便在必要时进行通信。

Visual Cron是一个可以使用的体面的任务调度程序。 我们使用它,在我们的asp.net / mvc / webapi服务器上调用服务方法。

http://www.visualcron.com/

要在ASP.NET MVC中安排任务,您有以下几种选择:

  • 第三方图书馆,如FluentScheduler , HangFire或Quartz.net 。
  • 从.Net 4.5.2开始,有QueueBackgroundWorkItem,这是一种在后台安排工作的本地方法。 以下是如何在ASP.NET MVC中使用它的指南 。
  • 用于后台工作负载和计划任务的Azure服务。 有几个针对不同的任务, 这里是他们的概述 。

如果您尝试自己实现自定义解决方案,请务必小心,因为与请求无关的线程中的任何exception都会停止整个过程。

我的ASP.NET MVC应用程序有类似的问题,我想在特殊时间做一些工作,最后我找到了办法。 我的解决方案是Plesk scheduleels任务function,因为大多数Windows服务器都使用plesk控制面板您可以使用plesk CP在Windows服务器上发布您的应用程序并在MVC应用程序中创建一个新的actionresualt并编写您想要在特殊情况下执行它们的代码倍。 通过plesk scheduleels任务创建一个新任务并使用你创建的cron调用你的Url,你可以制作许多crons。 如果我无法解释它你可以在互联网上搜索Plesk Schedueled Tasks,你可以找到很多好的答案。