2

我正在寻找一些指导,以获取在我的 MVC3 网站内部使用的 Job Scheduler 设置。为此,我一直在查看 Quartz.NET,但在网上找到有关设置的指导以确保它在网站运行时运行时遇到了麻烦。

考虑到上述信息。我知道在 IIS 内设置作业调度程序的几个“缺点”。我正在寻找设置的工作是简单的清理工作,其中时间相当不重要,所以如果 IIS 通过并回收网站的线程,它真的不会有什么大不了的。IE。如果由于回收/重新启动网站线程而每天运行 10 次,那很好/如果因为线程没有启动而每月运行一次,那也很好(尽管不太可能)。

我似乎记得关于 SO 的问题或通过 Google 发布的帖子显示在 in 内部进行了设置Application_Start()Global.asax但现在无法在任何地方找到此信息。有没有人对如何实现与我所说的类似的东西有任何建议?

4

2 回答 2

2

经过更多搜索后,我在 SO 上发现了这个问题,它讨论了在文件中实现 Quartz.NET global.asax

为了实现它,我只是引用了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。

于 2012-08-04T23:12:16.000 回答
0

您可以创建一个控制台应用程序来完成您的清理工作(我不确定您想要进行哪种清理)。您可以使用 Windows 任务计划程序在特定时间间隔内调用此应用程序来完成您的工作

另一种选择是创建将在特定时间间隔执行的 SQL 作业。Job 中的 Stored proc 可以调用托管代码。所以你可以从中调用你的点网代码。

如果只是清理 SQL 表,只需编写一个 SQL 作业即可。

于 2012-08-04T22:12:15.553 回答