#c# #asp.net #scheduled-tasks #hangfire #quartz
#c# #asp.net #запланированные задачи #hangfire #кварцевый
Вопрос:
Я отправил письмо, которое работает локально, используя asp.net и кварц. Это работает очень хорошо. но это не сработало, когда я поместил его на сервер. Они сказали, что, поскольку это общий хостинг, они не могут запустить его по соображениям безопасности. Агент Sql также не предоставляется в стандартной комплектации. Я предполагаю, что HangFire не использует службу Windows. Я не смог найти, как это сделать с asp.net веб-формы тоже нет.
Комментарии:
1. Измените хостинг: P Кроме этого, я не вижу причин, по которым планировщик не работает для отправки электронной почты. Quartz.net это просто нити внутри вашего asp.net процесс подачи заявки.
2. Может быть, проблема не в Quartz, а в отправке электронной почты? Как говорит @Isma, это должно сработать.
3. У меня есть веб-сайт 20 на хостинге, который сейчас не меняется :). отправка почты отлично работает в моей локальной сети с quartz.net . Поле backdate в таблице SQL, если срок действия истекает задним числом, отлично отправляет почту. но публикация на сервере не работает.
4. Боже мой .. 🙂 измените версию quartz 2.2.4 на 2.5, которая работает отлично .. 🙂 спасибо @Isma
Ответ №1:
Может быть, кому-то нужен этот код для Asp.net веб-форма.
Код задания по электронной почте
public class EmailJob : IJob
{
public void Execute(IJobExecutionContext context)
{
sendmail();
}
public void sendMail()
{
//send mail code
}
}
Код расписания заданий работает 00.00 каждый день. вы можете изменить то, что хотите .. 🙂
public class JobScheduler
{
public static void Start()
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
IJobDetail job = JobBuilder.Create<EmailJob>().Build();
ITrigger trigger = TriggerBuilder.Create()
.WithDailyTimeIntervalSchedule
(s =>
s.WithIntervalInHours(24)
.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(00, 00))
.InTimeZone(TimeZoneInfo.Local)
)
.Build();
scheduler.ScheduleJob(job, trigger);
}
}
Global.asax запускает jobscheduler
void Application_Start(object sender, EventArgs e)
{
JobScheduler.Start();
}