Quartz.Net调度程序在本地工作,但不在远程主机上工作

时间:2010-05-04 05:47:00

标签: c# asp.net quartz.net

我的devite计算机上有一个timed quartz.net作业,但是一旦部署到远程服务器就没有触发。我相信工作安排好了,因为如果我回发,它告诉我工作已经存在(我通常会检查回发)。电子邮件代码肯定有效,因为'button1_click'事件成功发送电子邮件。

我知道我对删除服务器有完全或中等的信任。我的主人说他们没有应用他们知道哪些会影响它的限制。为了让它运行我需要做的任何其他事情?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Quartz;
using Quartz.Impl;
using Quartz.Core;
using Aspose.Network.Mail;
using Aspose.Network;
using Aspose.Network.Mime;
using System.Text;

namespace QuartzTestASP
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                ISchedulerFactory schedFact = new StdSchedulerFactory();
                IScheduler sched = schedFact.GetScheduler();
                JobDetail jobDetail = new JobDetail("testJob2", null, typeof(testJob));
                //Trigger trigger = TriggerUtils.MakeMinutelyTrigger(1, 3);
                Trigger trigger = TriggerUtils.MakeSecondlyTrigger(10, 5);
                trigger.StartTimeUtc = DateTime.UtcNow;
                trigger.Name = "TriggertheTest";
                sched.Start();
                sched.ScheduleJob(jobDetail, trigger);
            }
        }
        protected void Button1_Click1(object sender, EventArgs e)
        {
             myutil.sendEmail();
        }
    }

    class testJob : IStatefulJob
    {
        public testJob() { }

        public void Execute(JobExecutionContext context)
        {
            myutil.sendEmail();
        }

    }

    public static class myutil
    {
        public static void sendEmail()
        {
            // tested code lives here and works fine when called from elsewhere
        }
    }
}

1 个答案:

答案 0 :(得分:5)

调度程序工厂应该是您的应用程序的全局工具。换句话说,在Global.asax或类似的声明它,它有效地为您提供了一个全局实例来操作。如果运行ASP.NET,则应在应用程序启动时启动调度程序。

小心思考。 ASP.NET回收其进程,这些进程有效地导致调度程序关闭(没有作业将运行),直到下一个下一个请求进入Web服务器再次启动调度程序。推荐的方法是使用Windows服务运行Quartz.NET作业。