2012-08-04 113 views
2

的我想找找工作调度程序设置为我的MVC3网站的使用里面的一些指导。我一直在寻找这方面的Quartz.NET,但是在安装时无法在线找到指导,以确保它在网站运行时运行。作业调度程序内MVC3网站

随着上述信息考虑在内。我意识到在IIS中设置一个作业调度程序的一些“缺点”。我期望设置的工作是简单的清理工作,其中时间安排非常不重要,所以如果IIS通过并回收网站的线程,那真的不会是什么大问题。即。如果它每天运行10次,由于回收/重新启动网站线程,这将是好的/如果它每月运行一次,因为线程没有开始,这也很好(虽然不太可能)。

我似乎回想起SO或通过Google发布的帖子,显示在内Global.asax内设置它,但无法在任何地方找到此信息。有没有人有关于如何实现类似于我所说的内容的建议?

回答

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作业/等这个特殊的需求。这主要是由于我的问题中提到的极端不可靠的情况。有了这个说法,如果你需要任何一种工作时间的保证,我怀疑你会希望以这种方式实现Quartz.NET。

+0

优秀!最简单,最干净的代码我见过。 – 2014-01-28 04:55:02

+0

当没有人访问您的网站并关闭应用程序时,该怎么办? – 2015-08-19 22:42:56

+0

@Gaʀʀʏ文本的最后一位特别说明了这一点。如果你需要一个可靠的作业调度器,你必须创建一些应用程序来运行在服务器/ pc/etc中。在我的场景中,如果应用程序池已关闭,则无关紧要,只需在开始时运行该作业即可。 – Jared 2015-08-25 18:14:13

0

您可以创建一个控制台应用程序做的清理工作(我不知道什么样的清理你想做的事)。您可以使用Windows任务调度程序来调用这个程序,在特定的时间间隔做你的工作

另一种选择是创建一个将在特定的时间间隔执行的SQL工作。您作业中的存储过程可以调用托管代码。所以你可以从中调用你的网点代码。

如果是单纯清洁SQL表,只要写一个SQL工作,这做的。