Quartz说无法实例化没有空构造函数的类型

问题描述

我正在使用最新版本的Quartz.net,也正在使用Autofac。我目前看到我的Quartz作业没有被触发。我得到的错误是:

System.ArgumentException:无法实例化没有空构造函数的类型

现在,我相信我以前曾做过这项工作,这可能是autofac或quartz软件包升级的结果。但是不确定。

我的IOC容器的配置如下:

    builder.RegisterModule(new QuartzAutofacFactoryModule());
    builder.RegisterModule(new QuartzAutofacJobsModule(Assembly.GetExecutingAssembly()));
    builder.RegisterModule(new QuartzAutofacFactoryModule(MatchingScopeLifetiMetags.RequestLifetimeScopeTag.ToString()));

    builder.RegisterType<JobScheduler>().AsSelf().InstancePerRequest();

    var container = builder.Build();

    DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

    using (var scope = container.BeginLifetimeScope(MatchingScopeLifetiMetags.RequestLifetimeScopeTag))
    {
        var scheduler = scope.Resolve<JobScheduler>();
        scheduler.Start();
    }

我的工作计划程序:

    public class JobScheduler
    {
        public JobScheduler(IScheduler scheduler)
        {
            _scheduler = scheduler;
        }

        public void Start()
        {
            var job = JobBuilder.Create<SomeJob>()
                .WithIdentity("MyJob","MyJobGroup")
                .Build();

            var trigger = TriggerBuilder.Create()
                .WithIdentity("MyJobTrigger","MyJobGroup")
                .StartAt(DateTimeOffset.Now.AddMinutes(1))
                .WithSimpleSchedule(x => x
                    .WithIntervalInMinutes(2)
                    .RepeatForever()
                    .WithMisfireHandlingInstructionNextWithRemainingCount()
                    )
                .Build();

            _scheduler.ScheduleJob(job,trigger);

            _scheduler.Start();
        }
    }

我的工作是:

    public class SomeJob: IJob
    {
       public ISomedependency _dependency;
       public SomeJob(ISomedependency dependency)
       {
          _dependency = dependency;
       }

        public async Task Execute(IJobExecutionContext context)
        {
             await _dependency.DoWork();
        }
    }

请记住,可能我可以为SomeJob创建一个无参数的构造函数,但是那样我将无法使用_dependency来完成工作。

有人可以帮忙吗?谢谢。

解决方法

问题似乎出在Quartz或Autofac.Extras.Quartz上。将在github上报告。请查看屏幕截图。

Screenshot

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...