2015-04-06 22 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