MVC预定电子邮件发送

时间:2013-11-22 11:10:14

标签: asp.net-mvc email scheduled-tasks ncron

我有一个ASP.NET MVC 4应用程序,我希望它每周发送一封报告电子邮件。我读过有关Quartz.NET的内容,但它对于这项简单的任务来说太强大了。现在我正在尝试使用NCron,但它需要Main()方法中的初始化器(带有必需参数args):

class Program
{
    static void Main(string[] args)
    {
        Bootstrap.Init(args, ServiceSetup);
    }
}

有没有办法在Application_Start()中执行此操作?我应该以{{1​​}}参数传递什么?还有哪些其他解决方案可以解决这个问题?

2 个答案:

答案 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();
}

再说一次:我自己从来没有这样做过,但请试一试,让我和其他人知道你的情况。