我需要从我的 .NET 应用程序自动发送我的电子邮件。但是,在为将来安排作业时,作业仅在用户访问站点时执行。
全球.asax.cs
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
JobScheduler.Start();
}
作业调度程序 (ScheduledTasks.cs)
public class EmailJob : IJob
{
public void Execute(IJobExecutionContext context)
{
BDL.Utilities.sendEmailNotification(to, subject, body);
}
}
public static void start()
{
foreach (AspNetUser user in users)
{
IJobDetail job = JobBuilder.Create<EmailJob>().WithIdentity((jobidentity))
.UsingJobData("to", user.Email)
.UsingJobData("subject", subject)
.UsingJobData("body", bodyholder).Build();
ITrigger trigger = TriggerBuilder.Create()
// schedule for 1 day in the future
.StartAt(expdate.AddDays(1)))
.WithIdentity(triggerid)
.Build();
scheduler.ScheduleJob(job, trigger);
}
}
我已经安排了未来 1 天的触发器。这个触发器应该会导致我的工作在未来 1 天执行。但是,由于某种原因,只有当用户在计划触发该作业的当天访问我的网站时,该作业才会执行。如何让 Quartz 自动执行这些作业???
编辑:我的目标是在不弄乱应用程序池线程的情况下完成此操作。接受的答案表明,这个问题仅仅是用自动化脚本替换用户交互。而副本要求一种方法来维护应用程序池线程,我可能会在 Java 中添加!