我有一个asp.net网站。现在我希望每天在特定时间调用.aspx
页面。 (没有Window Scheduler / windows服务)。
我想在没有Window Scheduler和Windows服务的情况下完成此任务,因为某些客户端无法访问Windows Server内核/控制台因此他们无法安装服务或Window Task Scheduler
基本上,
我需要安排任务而不在Windows操作系统上安装任何东西。
没有.exe也没有窗口服务
因为我在Web场上托管应用程序
我不希望有专门的窗口计算机来设置exe或Windows服务或窗口任务计划程序来调用.aspx
页面
任何帮助将不胜感激!
谢谢
答案 0 :(得分:2)
试试hangfire它是一个在asp.net上运行的作业处理器。
代码将是这样的:
RecurringJob.AddOrUpdate(
() => YourJobHere(),
Cron.Daily);
答案 1 :(得分:1)
花了大约30-35小时才找到解决方案后,我找到了quartz.dll来解决问题。它可以在C#
中找到。使用 Quartz ,我们可以非常轻松地安排或调用任何JOB/C# function
。
我们只需要在Global.asax文件的Application_Start
事件中启动我们的工作。
为了更多的理解,你可以参考以下代码,这对我来说是完美的!
Gloabl.asax: -
void Application_Start(object sender, EventArgs e)
{
SchedulerUtil schedulerUtil = new SchedulerUtil();
schedulerUtil.StartJob();
}
Class SchedulerUtil.cs中的: -
public void StartJob()
{
IScheduler iPageRunCodeScheduler;
string SCHEDULE_RUN_TIME = "05:00"; // 05:00 AM
// Grab the Scheduler instance from the Factory
iPageRunCodeScheduler = StdSchedulerFactory.GetDefaultScheduler();
TimeSpan schedularTime = TimeSpan.Parse(SCHEDULE_RUN_TIME);
iPageRunCodeScheduler.Start();
DbCls obj = new DbCls();
// define the job and tie it to our class
DateTime scheduleStartDate = DateTime.Now.Date.AddDays((DateTime.Now.TimeOfDay > schedularTime) ? 1 : 0).Add(schedularTime);
//IJobDetail job = JobBuilder.Create<Unity.Web.Areas.Admin.Controllers.CommonController.DeleteExportFolder>()
IJobDetail job = JobBuilder.Create<JobSchedulerClass>() // JobSchedulerClass need to create this class which implement IJob
.WithIdentity("job1", "jobGrp1")
.Build();
// Trigger the job to run now, and then repeat every 10 seconds
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "jobGrp1")
//.StartNow()
.StartAt(scheduleStartDate)
.WithSimpleSchedule(x => x
//.WithIntervalInHours(24)
.WithIntervalInSeconds(15)
.RepeatForever())
.Build();
// Tell quartz to schedule the job using our trigger
iPageRunCodeScheduler.ScheduleJob(job, trigger);
}
在JobSchedulerClass.cs中: -
public class JobSchedulerClass : IJob
{
public void Execute(IJobExecutionContext context)
{
Common obj = new Common();
obj.ScheduledPageLoadFunction();
}
}