Iis 作业停止运行?

Iis 作业停止运行?,iis,quartz.net,Iis,Quartz.net,我有一份工作,我想每十分钟做一次。为了安排时间,我使用: public static IScheduler _scheduler { get; private set; } ... ISchedulerFactory schedFact = new StdSchedulerFactory(); _scheduler = schedFact.GetScheduler(); _scheduler.Start(); string c

我有一份工作,我想每十分钟做一次。为了安排时间,我使用:

public static IScheduler _scheduler { get; private set; }

...

        ISchedulerFactory schedFact = new StdSchedulerFactory();
        _scheduler = schedFact.GetScheduler();
        _scheduler.Start();

        string cron = "0 0/10 * 1/1 * ? *";

        JobKey jobkey = new JobKey("Radar", "F");
        IJobDetail job = JobBuilder.Create<RadarJob>()
                                    .WithIdentity(jobkey)
                                    .Build();

        CronScheduleBuilder csb = CronScheduleBuilder.CronSchedule(new CronExpression(cron)).InTimeZone(TimeZoneInfo.Local);
        ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
                                                            .WithIdentity("Radar-Trigger", "G")
                                                            .WithSchedule(csb)
                                                            .Build();
        try
        {
            DateTimeOffset ft = _scheduler.ScheduleJob(job, trigger);
            Response.Write("Job Scheduled");
        }
        catch (ObjectAlreadyExistsException)
        {
            Response.Write("Job Already Exists!");
        }
publicstaticischeduler\u调度程序{get;private set;}
...
isSchedulerFactory schedFact=新StdSchedulerFactory();
_scheduler=schedFact.GetScheduler();
_scheduler.Start();
字符串cron=“0 0/10*1/1*?*”;
JobKey JobKey=新的JobKey(“雷达”、“F”);
IJobDetail job=JobBuilder.Create()
.WithIdentity(作业密钥)
.Build();
CronScheduleBuilder csb=CronScheduleBuilder.CronSchedule(新的CronExpression(cron)).InTimeZone(TimeZoneInfo.Local);
icontrigger触发器=(icontrigger)TriggerBuilder.Create()
.WithIdentity(“雷达触发器”、“G”)
.带时间表(csb)
.Build();
尝试
{
DateTimeOffset ft=_scheduler.ScheduleJob(作业,触发器);
响应。写入(“作业计划”);
}
捕获(ObjectAlreadyExistsException)
{
回答。写(“作业已存在!”);
}
一开始似乎很管用,每十分钟工作一次。然而,大约一个小时后,它停止运行。我记录成功和错误,我没有错误。是什么导致我的工作自行停止


我正在使用GoDaddy提供的共享托管计划运行IIS 7、.NET Framework 4.0。

您的作业正在IIS应用程序池中运行。池可能正在回收,这将杀死quartz任务,IIS不会自动重新启动它(因为它会在池回收时重新启动正在处理的web请求)

(我假设您正在Global.asax文件中的应用程序_Start()中运行上述代码。)

我们有这种情况,并决定使用石英作为一个独立的服务,不会受到池回收的影响,但我不确定这是否是一个可行的选择,为您根据共享托管计划


您指示您正在IIS 7上运行。如果事实上这是IIS 7.5,那么可能有一个更好的解决方案,如中所述,那就是将应用程序池配置为自动重新启动。

回答这个问题已经晚了,但我的应用程序中出现了这种错误。我通过在Scott Gu的博客中找到的IIS配置解决了这个问题:

也许所有的应用程序都会因为长时间闲置而停止?看看这个问题和答案:请看,哪里的共识是“不,他们不应该”!非常感谢。不幸的是,我没有IIS 7.5。我无法控制共享托管计划中的服务。我可能最终会使用一台始终打开的计算机在我的站点上加载任务。或者干脆把多余的钱交给一台专用服务器。你的主机是否允许你使用windows计划的任务?如果是这样的话,你可以让一个预定的任务每五分钟(IIRC是最短的重复时间)访问一次网站,作为一个保持活动状态的方法。