4

Unity の依存性注入を使用した 3 層アーキテクチャの MVC4 .Net Web アプリケーションがあり、毎日検証をスケジュールし、場合によってはメールを送信したいと考えています。このために、Application_start で Quartz Scheduler を使用したいと考えています。依存性注入 Windows サービスは適切なオプションではないためです。

これがapplication_startの私のコードです。

        // construct a scheduler factory
        ISchedulerFactory schedFact = new StdSchedulerFactory();
        IScheduler sched = schedFact.GetScheduler();
        sched.Start();

        IJobDetail dailyUserMailJob = new JobDetailImpl("DailyUserMailJob", null, typeof(SchedulerJob));
        // fire every time I open App/EveryDay
        ITrigger dailyUserMailTrigger = new SimpleTriggerImpl("DailyUserMailTrigger", 1,
                                                 new TimeSpan(1, 0, 0, 0));
        sched.ScheduleJob(dailyUserMailJob, dailyUserMailTrigger);

ここに私の仕事のコードがあります:

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Web;
 using EvaluationMvc.Bll.Contracts;
 using Quartz;
 using Quartz.Impl;

namespace EvaluationMvc.Utils
{
   public class SchedulerJob : IJob
   { 
      private IEvaluationBus _iEvaluationBus;

      public SchedulerJob(IEvaluationBus iEvaluationBus)
      {
        //Dependency injection
          _iEvaluationBus = iEvaluationBus; 

      }
      public void Execute(IJobExecutionContext context)
      {
        _iEvaluationBus.testingArchitecture();
       // Sends a test mail.
      }
  }
}    

しかし、私のジョブは決して実行されません。何が問題なのですか?

4

2 に答える 2

0

LeftyX に感謝します。Application_Start では、次のようなサービスを作成する必要があると思います。

var unityContainer = Bootstrapper.Initialise();
QuartzScheduler jobService = (QuartzScheduler)unityContainer.Resolve(typeof(QuartzScheduler), "Jobs");
jobService.Run();
于 2013-12-09T13:18:08.153 に答える