我正在寻找一些指导,以便在我的MVC3网站INSIDE中使用Job Scheduler设置。我一直在寻找Quartz.NET,但是我很难在网上找到指导,以确保它在网站运行时运行。
考虑到上述信息。我知道在IIS中设置作业调度程序有一些“缺点”。我想要设置的工作是简单的清理工作,其中时间相当不重要,所以如果IIS通过并回收网站的线程,它真的不会是一个大问题。即。如果它每天运行10次由于回收/重新启动网站线程会很好/如果它每月运行一次,因为线程没有开始那么好(虽然不太可能)。
我似乎回想起关于SO的帖子或通过Google发布的帖子显示在Application_Start()
中的Global.asax
内进行设置,但现在无法在任何地方找到此信息。有没有人对如何实现与我所说的相似的东西有任何建议?
答案 0 :(得分:2)
经过一些搜索后,我发现了this关于SO的问题,该问题涉及在global.asax
文件中实现Quartz.NET。
为了实现它,我只是在新的(在本帖子发布时)下载包中引用Quartz.dll
并使用以下代码...
protected void Application_Start()
{
/*
* Include other Application_Start() code...
*/
//Job Scheduling
try {
//Setup the new Scheduler
var sf = new StdSchedulerFactory();
var sched = sf.GetScheduler();
sched.Start();
//Setup the Job
var jobDetail = new JobDetailImpl( "myJob", null, typeof( DocCleanup ) );
//Create 1 week trigger that will go on forever
var trigger = new SimpleTriggerImpl( "jobTrigger", SimpleTriggerImpl.RepeatIndefinitely, new TimeSpan( 168, 0, 0 ) );
trigger.StartTimeUtc = DateTimeOffset.Now;
//Add the job to the scheduler
sched.ScheduleJob( jobDetail, trigger );
} catch (Exception ex) { //Implement Exception code... }
}
我不想为这个特殊需求创建一个控制台应用程序/ sql job / etc。这主要是由于我的问题中提到的可接受的极端不可靠性。如果你需要任何关于作业何时运行的保证,我怀疑你会想要以这种方式实现Quartz.NET。
答案 1 :(得分:0)
您可以创建一个控制台应用程序来执行清理作业(我不确定您要进行哪种清理)。您可以使用Windows任务计划程序在特定时间间隔内调用此应用程序来完成工作
另一个选项是创建一个将在特定时间间隔执行的SQL作业。作业中的存储过程可以调用托管代码。所以你可以从那里调用你的网络代码。
如果只是简单地清理SQL表,只需编写一个执行它的SQL作业。