1
我对ASp.net应用程序有麻烦,我测试了几个解决方案,但是我没有看到任何问题。感谢您的建议。用Quartz.Net和Asp.Net应用程序执行JobSchedule的好方法是什么?
我已经安装并运行Quartz.Net作为Windows服务。 Quartz.Net与我的API位于同一个文件夹中,以便在其中执行作业。
下面我的Global.asax的Application_Start
public static ISchedulerFactory schedFact;
public static IScheduler scheduler;
protected void Application_Start()
{
NameValueCollection properties = new NameValueCollection();
properties["quartz.scheduler.instanceName"] = "ServerScheduler";
properties["quartz.scheduler.proxy"] = "true";
properties["quartz.threadPool.threadCount"] = "10";
properties["quartz.scheduler.proxy.address"] = "tcp://localhost:555/QuartzScheduler";
schedFact = new StdSchedulerFactory(properties);
scheduler = schedFact.GetScheduler();
scheduler.Start();
MyAPI.Services.ScheduleTasks.JobScheduler.StartGenerateContract();
}
这在我的作业scrippted类:
public class ScheduleTasks
{
public static Dictionary<string, string> report;
public class JobScheduler
{
public static void StartGenerateContract()
{
try
{
MailService.SendMail("StartGenerateContract", "Scheduletask",
new Exception(DateTime.Now.ToString()));
IJobDetail job_generate = JobBuilder.Create<GenerateAndSendContract>()
.WithIdentity("generateContractJob", "group1")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger_contracts", "group1")
.ForJob("generateContractJob", "group1")
.StartNow()
.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(01, 00))
.Build();
MyAPI.MvcApplication.scheduler.ScheduleJob(job_generate, trigger);
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
}
}
然后我的工作是在同一个文件和类ScheduleTasks
public class GenerateAndSendContract : IJob
{
public void Execute(IJobExecutionContext context)
{
try
{
MailService.SendMail("GenerateAndSendContract", "Scheduletask");
//my working code...
}
catch (Exception e)
{
MailService.SendErrorMail("GenerateAndSendContract", "ScheduleTasks", e);
}
}
}
我的scheduleTask完美执行,因为我收到第一封电子邮件(StartGenerateC良好的时间间隔。但是该作业没有执行,因为类generateandsendcontract中的代码没有被触发(没有中断点,没有发送邮件GenerateAndSendContract)。
我的代码有问题吗?感谢您的帮助。
'MyAPI.MvcApplication.scheduler'背后的代码是什么? – 2015-03-26 14:56:05
嗨,这是我的公共静态IScheduler调度程序;这是在我的application_start中启动的 – Seb 2015-03-26 15:13:35