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

时间:2017-01-12 15:25:06

标签: c# asp.net asp.net-mvc scheduled-tasks repeat

我试图为我的.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库实现它,但我根本不喜欢它,我有两个计划的任务在预定的时间内完全不会运行...

4 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:3)

对于ASP.NET MVC中的调度任务,您有以下几种选择:

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

答案 2 :(得分:1)

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

http://www.visualcron.com/

答案 3 :(得分:0)

我的ASP.NET MVC应用程序也有类似的问题,我想在特殊时期做一些工作,最后我找到了一种方法。 我的解决方案是Plesk计划任务功能,因为大多数Windows服务器都使用plesk控制面板。您可以在使用plesk CP的Windows服务器上发布应用,并在MVC App中创建新的actionresualt,并编写要以特殊方式执行它们的代码。次。 通过plesk scheduels任务,可以创建一个新任务,并使用创建的cron调用您的Url,您可以创建许多任务。 如果我不能很好地解释它,您可以在Internet上搜索有关Plesk Schedueled Tasks的信息,您可以找到许多很好的答案。