2011-03-13 4 views
2
와 ASP.NET MVC3에서

I 설정 Ninject에 여기 Using Binaries from GithubQuartz.NET은 Ninject에

설명처럼 그리고 지금은 설정 Quartz.NET를 원하지만, Ninject에 내 작업이 실행되지 않습니다 구현했습니다. Ninject를 구현하기 전에 내 작업이 예상대로 실행됩니다. 왜? 그리고 그 해결책은 무엇입니까?

도움 주셔서 감사합니다. : Ninject에 관련된 문제가 아니에요

public class MvcApplication : NinjectHttpApplication 
{ 
    (...)  
    protected override IKernel CreateKernel() 
    { 
     var kernel = new StandardKernel(); 
     kernel.Load(System.Reflection.Assembly.GetExecutingAssembly()); 

     kernel.Bind<IUploadRepository>().To<UploadRepository>(); 
     kernel.Bind<StocksDB>().To<StocksDB>().InRequestScope(); 

     return kernel; 
    } 

    protected override void OnApplicationStarted() 
    { 
     base.OnApplicationStarted(); 

     AreaRegistration.RegisterAllAreas(); 
     RegisterGlobalFilters(GlobalFilters.Filters); 
     RegisterRoutes(RouteTable.Routes); 

     // Quartz.NET scheduler 
     var factory = new Quartz.Impl.StdSchedulerFactory(); 
     var scheduler = factory.GetScheduler(); 
     scheduler.Start(); 

     // construct job info 
     var jobDetail = new Quartz.JobDetail("myJob", null, typeof(DumbJob)); 
     var trigger = new Quartz.SimpleTrigger("myTrigger", null, DateTime.UtcNow, null, Quartz.SimpleTrigger.RepeatIndefinitely, TimeSpan.FromMinutes(5));    
     scheduler.ScheduleJob(jobDetail, trigger);    
    } 
} 
+0

확실하지 않지만 NuGet을 사용하여 현재 Ninject.MVC3 코드를 프로젝트에 추가해야합니다. Web.Activator를 사용하며 더 이상 NinjectHttpApplication에서 파생되어야합니다. 귀하의 문제라고 생각됩니다. – tvanfosson

+0

제안 해 주셔서 감사합니다. 그러나 Visual Studio Express를 사용하고 있으며 잘못하지 않았다면 NuGet은 Visual Studio의 확장 기능입니다. –

+0

은 여전히 ​​사실 인 것처럼 보이지만 앞으로 더 많은 Express 버전을 지원할 계획이 있습니다 (VS Web Dev Express 지원). – tvanfosson

답변

1

. 스케쥴러에 대한 참조를 유지하는 것을 잊었을뿐입니다. OnApplicationStarted 이후 즉시 가비지 수집됩니다.

+0

이 문제가 해결 되었습니까? –

+0

@David @Remo gloor : Remo '@ David'을 포함시켜야 지각이 늦어지면 더 빨리 떠올리게됩니다. 이 같은 의견은 충성도가 높은 추종자 만 볼 수 있습니다! –

+0

@Ruben Bartelink : 정보를 제공해 주셔서 감사합니다. 나는 그것에 대해 몰랐다. –

0

quartz.net에 대한 고유 한 Ninject ISchedulerFactory를 작성해야합니다.

기본 팩토리가 새 DumbJob()을 생성합니다. 그리고 나는 당신이 DumbJob에 무언가를 주입하려한다고 믿는다. 그래서 당신은 자신의 스케줄러 공장에서 ninject로 DumbJob의 인스턴스를 생성해야한다.

또한 공장에서 mvc3 ninject kernel을 사용할 수 있습니다.

+0

Remo가 언급 한 문제는 도전적으로 문제가됩니다.하지만 이제는 발사 될 때 쓰레기 수거 전에 atleast fire를 실행해야합니다. – mamu

관련 문제