2016-09-21 85 views
0

我正在開發一個MVC應用程序,它有一個方法,它應該有一天結束。我沒有Windows任務調度程序的訪問權限,並且不可能實現Windows服務。 (因爲部署的包應該給不同的客戶,他們有自己的服務器,在這種情況下,我們不會部署Windows服務或使用任務調度器)運行方法在特定時間MVC應用程序

請告訴我有沒有任何方法在特定時間執行某些方法。 我看到有使用計時器的方法。但問題是,這項工作應該只需要在一天內完成一次,過程不會超過1分鐘。

如果我們使用計時器,資源將分配給計時器服務,這不是一個好方法,因爲我猜測,因爲這種方法在一天只運行一次。 (過程在其他23個小時59分鐘運行,這是浪費資源。我猜計時器的概念是好的,如果過程是在每5,10分鐘跑)

請給我方向....

+0

看看石英作業調度器。 – 2016-09-21 10:48:55

+0

「*並且實現Windows服務是不可能的*」,爲什麼它不可能?當項目部署給你的客戶時,它可以安裝Windows服務作爲部署過程的一部分......如果你想在*客戶機器*上每天執行一次方法,那麼你必須有一些長期運行的應用程序 – Fabjan

+0

Take看一下HangFire,它的設計目的是描述你的目的,並且可以在給定的時間發佈一個工作/方法:http://hangfire.io/ – LDJ

回答

0

我想你已經有一個數據庫。創建一個名爲LastRun的單個日期時間字段的表。在此字段中保存您的方法執行的最後日期和時間。

在Session Start或Application上的MVC應用程序中,將LastRun datetime與當前日期時間進行比較,並決定是否要執行上述方法。該方法執行後更新LastRun值。

+0

只需在application_start()中檢查下面的代碼,因爲這是日終程序,應該在午夜十二點的時候運行。 \t DateTime dt = Convert.ToDateTime(「2016/09/22」); if(DateTime.Today == dt) { int x = 5; } 我將本地計算機時間更改爲2016/09/21 11:59 pm,並等待直到觸發bolow代碼(在「if」塊內添加斷點)但它沒有觸發。 – weeraa

+0

上述建議的方法的缺點是您將需要一個新的應用程序或會話啓動事件來觸發它。 – Trifon