2015-04-06 107 views
0

我在ASP.NET(VB.NET)中编写了一个基于Web的程序,为我们的50名员工生成工作日程表 。除了1部分外,一切都在工作。我有一个叫做RunDaily()的代码块 ,它需要每天执行1次(或更多)次。让我的ASP.NET代码每天运行(至少)

有50名员工在使用我的代码...我希望在任何给定的日子里,至少有一个 1会导致RunDaily()执行。在周一至周五期间,很容易发生。但在周末,只有0-5名员工可能会使用此程序。假期只有大约0-2名员工。

有没有办法保证RunDaily()每天至少运行一次? 由于这个基于网络的计划的性质......我不能保证 ,它总是会发生。

作为临时解决方案,我添加了一个元刷新行,每6小时刷新一次 页面。所以,即使我(或任何人)离开他们的浏览器打开... 并显示页面... RunDaily()会发生。

我甚至已经把这个网页作为少数员工浏览器的HOME页面。但我仍然无法确定他们甚至会在某些周末或节假日打开他们的 浏览器。

有没有更好的方法?我需要支付每天 公司为我执行http://example.com/MyProgram.aspx吗? (是否有 这样的公司?)

+0

您可以创建Windows服务 – Sandeep 2015-04-06 11:58:47

+0

我将如何“创建Windows服务”?我无法保证我的电脑每天24小时都在运行7/365。 – user2296528 2015-04-06 12:01:51

+0

不一定是“你的”电脑。将任务或服务放在Web服务器上... – Jeremy 2015-04-06 12:09:46

回答

0

我建议,你最好的选择是编写一个单独的程序(例如Windows服务或控制台应用程序和计划作业),每天运行一次,根据你的首选小时,这应该运行你的方法。您可以将其编程为发出HTTP请求,或从您的DLL中调用方法。

从我的头顶开始,您也可以尝试一些工具,它可以向您的aspx页面发出HTTP GET请求,并将其安排为每天运行一次。

为此,您需要一台每天运行的计算机(可以在您的Web服务器上执行此操作吗?)。

0

创建一个页面,您将使用Windows计划程序调用 - 将间隔设置为1天。

0

只需创建一个带有URL的.bat文件,使其指向所述网页并让Task Scheduler每24小时运行一次。

0

您可以使用Quartz.Net。

using Quartz; 
using Quartz.Impl; 
using System; 

namespace ScheduledTaskExample.ScheduledTasks 
{ 
    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(0, 0)) 
      ) 
      .Build(); 

     scheduler.ScheduleJob(job, trigger); 
    } 
} 

请参阅相同的参考链接。

http://www.mikesdotnetting.com/article/254/scheduled-tasks-in-asp-net-with-quartz-net

0

因为它没有解释,我提出这样的假设:你不必在这里本网站正在运行,所以这是毫无疑问的安装窗口服务或者添加任务的Web服务器控件在那台机器上的时间表,你也提到你不想在你的盒子上本地托管这样的服务/时间表,所以...

如果这是真的,你唯一的选择可能是把这个任务安排在别的地方... Azure Web Job让人想起。您绝对可以安排网络作业按照一定的时间表运行,并且您可以使用curl.exe或其他类似命令在您的网站上点击该端点。

要了解WebJob头here