首页 > 解决方案 > 如何在服务器上运行没有 Windows 服务的计划作业?

问题描述

我已经发送了一封使用 asp.net 和quartz 在本地工作的邮件。它工作得很好。但是当我把它放在服务器上时它不起作用。他们说,因为它是共享主机,出于安全原因,他们无法运行它。Sql Agent 也没有作为标准提供。我猜 HangFire 不使用 Windows 服务。我也找不到如何使用 asp.net 网络表单。

标签: c#asp.netscheduled-taskshangfirequartz

解决方案


也许有人需要这个用于 Asp.net webform 的代码。

电子邮件职位代码

public class EmailJob : IJob
{

    public void Execute(IJobExecutionContext context)
    {
        sendmail();
    }

   public void sendMail()
    {
       //send mail code
    }

}

JobScheduler 代码每天 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启动作业调度程序

void Application_Start(object sender, EventArgs e)
    {
        JobScheduler.Start();

    }

推荐阅读