Я настроил работу cron с помощью Quartz.net, но, похоже, она не срабатывает.
После загрузки я внес изменения в файл web.config, чтобы перезапустить приложение, поэтому оно должно запустить метод Application_Start. Я также протестировал задание с помощью простого триггера, и он работает, поэтому я не уверен, что происходит.
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
// construct a scheduler factory
ISchedulerFactory schedFact = new StdSchedulerFactory();
// get a scheduler
IScheduler sched = schedFact.GetScheduler();
sched.Start();
// construct job info
JobDetail jobDetail = new JobDetail("myJob", null, typeof(Recorder));
jobDetail.JobDataMap["domain"] = "www.mydomain.com";
jobDetail.JobDataMap["userId"] = "2";
// Create trigger (everything is in UTC!!!)
CronTrigger cronTrigger = new CronTrigger("Schedule");
cronTrigger.StartTimeUtc = TriggerUtils.GetEvenSecondDate(DateTime.UtcNow);
cronTrigger.TimeZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"); // run in pacific timezone
cronTrigger.CronExpressionString = "0 30 13 ? * MON-FRI *";
sched.ScheduleJob(jobDetail, cronTrigger);
}
public class Recorder : IJob
{
public void Execute(JobExecutionContext context)
{
JobDataMap dataMap = context.JobDetail.JobDataMap;
string domain = dataMap.GetString("domain");
string userId = dataMap.GetString("userId");
string url = "http://" + domain + "/record.aspx?userId=" + userId;
using (WebClient client = new WebClient())
{
client.DownloadString(url);
}
}
}