【问题标题】:How can I run schedule job with out windows service on server?如何在服务器上运行没有 Windows 服务的计划作业?
【发布时间】:2021-04-21 06:23:56
【问题描述】:

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

【问题讨论】:

  • 更改主机 :P 除此之外,我认为调度程序没有理由无法发送电子邮件。 Quartz.net 只是你的 asp.net 应用程序进程中的线程。
  • 也许问题不在于 Quartz 而在于发送电子邮件?正如@Isma 所说,它应该可以工作。
  • 我有 20 个托管网站,现在没有变化 :)。使用quartz.net 在我的本地网络上发送邮件工作正常。 SQL 表中的 backdate 字段如果 backdate 过期而不是完美发送邮件。但发布到服务器不起作用。
  • 天哪.. :) 将石英版本 2.2.4 更改为 2.5 运行完美.. :) 谢谢@Isma

标签: c# asp.net scheduled-tasks hangfire quartz


【解决方案1】:

也许有人需要这个用于 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();

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    相关资源
    最近更新 更多