这项工作不存在(Quartz .NET)

时间:2015-02-05 13:07:42

标签: c# asp.net quartz-scheduler

我目前正在项目中使用Quartz .NET 1.0.3版。出于某种原因,我无法将其升级到最新版本。

这些是我使用的方法:

ScheduleUnreserveCarJob

Trigger trigger = CreateTrigger(typeof(UnreserveCarJob), lotId.ToString(), startTimeUtc);

trigger.JobDataMap.PutAsString(JobDataMapKeys.LotId, lotId);

scheduler.ScheduleJob(trigger);

UnreserveCarJob

[SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods")]
    protected override void ExecuteJob(JobExecutionContext context)
    {
        using (IAuctionProcessClient auctionProcessClient = new AuctionServiceClient())
        {
            var request = LotGetRequest(context.MergedJobDataMap);

            auctionProcessClient.LotGet(request);
        }
    }

    private static LotGetRequest LotGetRequest(JobDataMap jobDataMap)
    {
        return new LotGetRequest { Lot = jobDataMap.GetInt(JobDataMapKeys.LotId) };
    }

CreateTrigger

var jobTypeName = jobType.Name;

        return new SimpleTrigger
        {
            Group = jobTypeName,
            JobName = jobTypeName,
            MisfireInstruction = MisfireInstruction.SimpleTrigger.FireNow,
            Name = name,
            StartTimeUtc = startTimeUtc
        };

当我想从ScheduleJob执行ScheduleUnreserveCarJob时,我总是收到错误The job DEFAULT.UnreserveCarJob referenced by the trigger does not exist

触发器保存在数据库中,因此在QRTZ_JOB_LISTENERS和QRTZ_JOB_DETAILS中,我有一行有JOB_NAME UnreserveCarJob和JOB_GROUP DEFAULT

这个问题可能是什么原因?

修改 我手动插入了QRTZ_JOB表的详细信息,因此触发器可以转到QRTZ_TRIGGERS表(由于FK而这样做)。我的猜测是Quartz.dll没有在DB中插入任何行。我还是不知道为什么。

编辑2: 我跟踪了SQL Server Profiler的问题,问题出在scheduler.ScheduleJob(trigger);。运行此行时,必须在QRTZ_TRIGGERS和QRTZ_SIMPLE_TRIGGERS上进行INSERT。不幸的是,我得到The job referenced by the trigger does not exist。出于某种原因,quartz.dll没有插入表中。

0 个答案:

没有答案