我有一个ASP.NET MVC 4应用程序,我希望它每周发送一封报告电子邮件。我读过有关Quartz.NET的内容,但它对于这项简单的任务来说太强大了。现在我正在尝试使用NCron,但它需要Main()
方法中的初始化器(带有必需参数args
):
class Program
{
static void Main(string[] args)
{
Bootstrap.Init(args, ServiceSetup);
}
}
有没有办法在Application_Start()
中执行此操作?我应该以{{1}}参数传递什么?还有哪些其他解决方案可以解决这个问题?
答案 0 :(得分:0)
你必须查看ncrone对这些参数的作用。这样做是将Windows应用程序的命令行参数传递给组件。 如果您在Web应用程序上使用它,则没有命令行参数,因此如果它需要参数,您将必须自己构造参数(硬编码或从配置文件或数据库或。 ..)
也可能这些是可选的,然后你可以传入一个空数组(但是再次检查ncrone的文档)
另外,请记住,当您的应用程序关闭时(标准是20分钟后没有任何活动),您的cron runner不会将其唤醒。如果是这种情况,您需要通过确保每20分钟至少完成一个请求来保持应用程序处于活动状态,或者配置IIS以使其始终保持活动状态。
答案 1 :(得分:0)
NCron的作者说...
首先:我从未将自己的NCron集成到Web应用程序中,我不确定它的工作效果如何。例如,正如Kenneth指出的那样,如果没有收到任何流量,IIS将关闭你的应用程序,并且可能还有其他打嗝。
为了将NCron集成到Web应用程序中,我建议您忽略Bootstrap.Init()
(专门设计为控制台应用程序的入口点),而是直接使用SchedulingService
:
using (var service = new SchedulingService())
{
service.Hourly().Run<DataUpdateJob>();
service.Daily().Run<RecycleCacheJob>();
service.Start();
}
再说一次:我自己从来没有这样做过,但请试一试,让我和其他人知道你的情况。