如何在服务器上运行没有 Windows 服务的计划作业?
Posted
技术标签:
【中文标题】如何在服务器上运行没有 Windows 服务的计划作业?【英文标题】:How can I run schedule job with out windows service on server? 【发布时间】: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 【参考方案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();
【讨论】:
以上是关于如何在服务器上运行没有 Windows 服务的计划作业?的主要内容,如果未能解决你的问题,请参考以下文章