簡體   English   中英

在 C# .NET MVC 應用程序中執行計划任務

[英]Preforming scheduled tasks in C# .NET MVC Application

我正在嘗試為我的 .NET MVC 應用程序實現一個邏輯,我將在以下基礎上觸發我的應用程序中的計划任務:

First scheduled task to run from 00 am to 1 am in the morning
Second scheduled task to run from 1:10 am to 08:00 am in the morning 
Third scheduled task to run from 8:15 am to 11:15 pm every 1 hour

這將一年 365 天每天重復......

我可以使用 .NET 或外部庫中的哪種機制以最簡單的方式實現這一點,只需很少的代碼?

我試圖用 Quartz.NET 庫來實現它,但我根本不喜歡它,我有兩個計划任務在運行,其中一個在預定時間根本不會運行......

出於多種原因,您不希望在Web應用程序中執行長時間運行和重復出現的后台任務。 您可以瀏覽following blog post ,其中非常清楚地概述了它們。

我建議您將此邏輯移動到單獨的Windows服務或甚至控制台應用程序中,該應用程序的運行可以使用Windows任務計划程序以所需的時間間隔進行調度。

這樣做的好處是,您將從執行長時間運行的任務中卸載Web應用程序,這將耗費您的Web服務器中的寶貴資源。 當然,web服務器和工作服務可以共享公共的集中式數據存儲區或消息傳遞層,以便在必要時進行通信。

要在ASP.NET MVC中安排任務,您有以下幾種選擇:

如果您嘗試自己實現自定義解決方案,請務必小心,因為與請求無關的線程中的任何異常都會停止整個過程。

Visual Cron是一個可以使用的體面的任務調度程序。 我們使用它,在我們的asp.net / mvc / webapi服務器上調用服務方法。

http://www.visualcron.com/

我的ASP.NET MVC應用程序有類似的問題,我想在特殊時間做一些工作,最后我找到了辦法。 我的解決方案是Plesk scheduleels任務功能,因為大多數Windows服務器都使用plesk控制面板您可以使用plesk CP在Windows服務器上發布您的應用程序並在MVC應用程序中創建一個新的actionresualt並編寫您想要在特殊情況下執行它們的代碼倍。 通過plesk scheduleels任務創建一個新任務並使用你創建的cron調用你的Url,你可以制作許多crons。 如果我無法解釋它你可以在互聯網上搜索Plesk Schedueled Tasks,你可以找到很多好的答案。

有一些方法可以創建計划任務。

1- 創建一個 WebApi 並在一段時間內由本地控制台或 Windows 服務應用程序調用它。

2- 使用 3rd 方庫,如 Andreas 所說的 FluentScheduler、HangFire 或 Quartz.net。 雖然它有它自己的副作用。

3- 如果您的應用程序中使用了 Sql server,您可以為您的任務創建一個過程並將其放在 Sql server 中的作業中。 如果在 Sql Server 中啟用了 CLR,您甚至可以將 C# 用於您的函數,

如果我要選擇,我會選擇Sql Server 作業。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM