2017-03-07 7 views
0

asp.net 웹 사이트가 하나 있습니다. 이제 매일 특정 시간에 .aspx 페이지를 호출하려고합니다. (윈도우 스케줄러 없음/windows 서비스). 그들이예약 된 작업 - 서버의 예약 시간에 호출 할 aspx 페이지

기본적으로, 는 내가 필요로하는 서비스를 설치하거나 윈도우 작업 스케줄러 수 없습니다 그래서 일부 클라이언트가 윈도우 서버 커널/콘솔에 액세스 할 수 없기 때문에

나는 윈도우 스케줄러 및 Windows 서비스없이이 작업을 달성하고자하는 Windows OS에 아무것도 설치하지 않고 예약 된 작업을 가질 수 있습니다. 웹 팜에이 응용 프로그램을 호스팅하고 있기 때문에 exe 또는 windows 서비스 또는 Window Task Scheduler를 설정하여 전용 창 컴퓨터를 갖고 싶지 않으므로 .aspx 페이지를 불러 오지 않습니다.

어떤 도움을 주시면 대단히 감사하겠습니다!

당신은

답변

2

hangfire는 asp.net 통해 실행 작업 프로세서의 시도 감사드립니다.

코드는 다음과 같이 될 것입니다 :

RecurringJob.AddOrUpdate( () => YourJobHere(), Cron.Daily);

1

해결책을 찾기 위해 주위 30-35시간을 지출 한 후 내가 해결 할 수있는 quartz.dll을 발견했다. C#에서 사용할 수 있습니다. 석영을 사용하면 JOB/C# function을 쉽게 예약하거나 걸 수 있습니다.

Global.asax 파일의 Application_Start 이벤트에서 작업을 시작하면됩니다.

나를 이해하는 데 도움이되는 코드를 아래에서 참조하십시오!

Gloabl.asax - 클래스 SchedulerUtil.cs에서

void Application_Start(object sender, EventArgs e) 
{ 
    SchedulerUtil schedulerUtil = new SchedulerUtil(); 
    schedulerUtil.StartJob(); 
} 

: -

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(); 
    } 
    }