我应该在asp.net中找到我的Quartz代码

时间:2013-08-26 10:59:09

标签: quartz-scheduler asp.net-4.0 scheduler

我有一个asp.net网站,想要每天做一次任务。 任务是:在注册到期前2天向用户发送电子邮件。 我使用了Quartz.NET 1.0版。我写了一个示例代码,每秒打开一个窗口。现在我不知道在asp.net项目中应该在哪里找到这段代码?!它现在在一个简单的页面中。我希望它独立于页面。

    public class DumbJob : IJob
    {
        public DumbJob()
        {
        }

        public void Execute(JobExecutionContext context)
        {
            Console.WriteLine("DumbJob is executing.");
            System.Windows.Forms.MessageBox.Show("NICE");
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            // construct a scheduler factory
            ISchedulerFactory schedFact = new StdSchedulerFactory();

            // get a scheduler
            IScheduler sched = schedFact.GetScheduler();
            sched.Start();

            // construct job info
            JobDetail jobDetail = new JobDetail("myJob", null, typeof(DumbJob));

            // fire every hour
            Trigger trigger = TriggerUtils.MakeSecondlyTrigger();//.MakeHourlyTrigger();

            // start on the next even hour
            trigger.StartTimeUtc = TriggerUtils.GetEvenSecondDate(DateTime.UtcNow);
            trigger.Name = "myTrigger";

            sched.ScheduleJob(jobDetail, trigger);
        }
    }

1 个答案:

答案 0 :(得分:1)

您可以通过多种方式实现这一目标......但是,为您的案例构建某种控制台应用程序可能会更好。

坦率地说,其中最简单的可能是Windows计划任务,它会每天触发并启动一个exe程序(您使用控制台dotnet编写),该程序将检查即将过期的用户并在找到时发送电子邮件。 .. 如果您不希望在各个地方拥有用户+电子邮件代码(并将所有这些集中在您的dotnet Web应用程序中),那么我将在您的.NET Web应用程序中创建一个SOAP / REST端点,该端点将被瘦身调用客户端,将由“Windows计划任务”

安排

在调度和执行更多企业事务(如作业集群/作业高可用性/作业监控)时,Quartz可以为您提供更大的灵活性...... 但这仍然是一个.NET控制台应用程序,它将启动石英调度程序,创建一个触发器,并永远运行...(可能包含在Windows“包装”服务中以获得更多控制)