2017-02-09 5 views
14

ASP.NET Web APIで特定の時間に毎日実行し、更新ステータス/レコード/電子メール、SMSの生成などの特定のタスクを実行する必要があるいくつかの関数を作成します。WebApiのWindowsタスクスケジューラまたはTaskService関数

iは

using System; 
using Microsoft.Win32.TaskScheduler; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     // Get the service on the local machine 
     using (TaskService ts = new TaskService()) 
     { 
     // Create a new task definition and assign properties 
     TaskDefinition td = ts.NewTask(); 
     td.RegistrationInfo.Description = "Does something"; 

     // Create a trigger that will fire the task at this time every other day 
     td.Triggers.Add(new DailyTrigger { DaysInterval = 2 }); 

     // Create an action that will launch Notepad whenever the trigger fires 
     td.Actions.Add(new ExecAction("notepad.exe", "c:\\test.log", null)); 

     // Register the task in the root folder 
     ts.RootFolder.RegisterTaskDefinition(@"Test", td); 

     // Remove the task we just created 
     ts.RootFolder.DeleteTask("Test"); 
     } 
    } 
} 

コード

でTaskServiceを作成する必要がありますか私は、.batファイルを作成する必要がありますし、タスクスケジューラで新しいタスクを作成します。

+1

私は、スケジュールされたタイマーを持つWindowsサービスを提案します。私はこの実装をいくつかの生産タスクで使用します。 Windowsがフェイルオーバー、通知、ログ、再起動などを処理できるようにし、Visual StudioのC#でWindowsサービスを構築することは、テンプレートを使用することで非常に簡単です。 https://www.codeproject.com/Articles/6507/NET-Scheduled-Timer – Mangist

答えて

5

あなたが質問で述べたように、あなたは更新状況/レコード/生成の電子メールのような特定のタスクを実行する必要があり、SMSなど

ように、データベースへのアクセスは、シナリオにし、一方で来る、あなたは意志電子メールとSMSを送信しなければなりません。サードパーティ製のライブラリやその他の構成設定アクセスが必要な場合があります。

このようにすべてを行うにはコードの実装を使用すると、変更と要件を十分に維持することができます。

".batファイルとウィンドウスケジューラ"については、を満たすために利用できる制限付きバッチコマンドを使用して、偉大なスキルを持っている必要があります。

私の提案は、コード、.exeとwindowsスケジューラタスクです。

また、これは別のアプリケーションである必要があります.Web APIコードと混同しないでください。 Web APIプロジェクトでWeb APIソリューションでいつでも新しいプロジェクトを作成し、可能なコードを再利用することができます。

0

Hangfireをお試しください。それは無料で、商用アプリで無料で使用できます。あなたはhereと書かれています。

+0

これは唯一の問題は、アプレットがシャットダウンしてもタスクが実行されない場合、cleve/aedvancedの設定がないことです。プラスはちょうど1つのタスクのために残忍かもしれません。 –

+0

@AndrewMonksこの記事をお読みください:http://docs.hangfire.io/en/latest/deployment-to-production/making-aspnet-app-always-running.html – kmatyaszek

+0

彼らの「クイックスタート」は、ガイドではダッシュボード上の認証も考慮されません。 –

0

あなたの選択に応じて時間間隔を適用できる信頼性の高いタスクスケジューリングを希望する場合は、[quartz]:https://www.quartz-scheduler.net/をお勧めします。 Quartzでは、スケジュールされたタスクを簡単に、管理しやすく、CPUのオーバーヘッドなしで追加/編集/削除することができます。 さらに、Quartzは、最小のアプリケーションから大規模なエンタープライズシステムまで、オープンソースのジョブスケジューリングシステムです。

関連する問題