我通常认为让 Web 服务器进行自动化是不好的做法,我更喜欢将其保留在更适合自动化工作的服务中。
也就是说,使用上面的文章,我会将标题为 using Quartz.net 的部分放入 global.asax 中的 application_start
在 application_end 中,关闭作业调度程序。
最后,在一个文件夹中,编写如下类:
C#
public class InsertRssFeedJob : IJob
{
public void Execute(JobExecutionContext context)
{
var rssController = new RssController();
rssController.InsertRssFeedItem("");
}
}
VB.net
Public Class InsertRssFeedJob
Implements IJob
Public Sub Execute(context as JobExecutionContext)
Dim rssContoller = new RssController()
rssController.InsertRssFeedItem("")
End Sub
End Class
抱歉,我不太了解 VB,无法在 IDE 之外编写它,因此您需要转换此 c#。
private static IScheduler _scheduler;
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
_scheduler = new StdSchedulerFactory().GetScheduler();
JobDetail jobDetail = new JobDetail("rssFeedJob", null, typeof(InsertRssFeedJob));
// fire every hour
Trigger trigger = TriggerUtils.MakeHourlyTrigger();
// start on the next even hour
trigger.StartTime = TriggerUtils.GetEvenHourDate(DateTime.UtcNow);
trigger.Name = "myTrigger";
_scheduler.ScheduleJob(jobDetail, trigger);
}
protected void Application_End()
{
_scheduler.Shutdown();
}
此外,如果 RssController 需要访问任何上下文信息,则需要从 HttpContext 类中获取。
硅