2016-08-24 7 views
1

私は特定の時間までにユーザーに電子メールを送信するためのシステムを持っています。 ASP.NET MVC4でビルドされ、メッセージの時刻をチェックしてメッセージの日が今日の場合に送信するためのアクション結果 "function"があります。「アクション結果」を呼び出す方法ASP.NET MVCを特定の時間に(毎日)

効率的な方法でスケジューラのように(毎日)このアクション結果をどのように呼び出すことができますか?

ありがとうございました。

+0

電子メールを送信し、サーバー上でスケジュールされたタスクを設定して毎日実行するためのアプリケーションを作成することは間違いありません。このようなWebアプリケーションでタイマーを設定するのは危険です。アプリケーションが一定期間アクセスされなかった場合、IISはそれをアンロードして、毎日のタスクをアンロードすることができます。 – itsme86

+0

MVCアクションを厳格に使用しない場合は、hangfire.ioをチェックアウトしてください。それは素晴らしいです。 http://hangfire.io – Developer

答えて

2

別個のサービス/アプリケーションはより良いでしょうが、wgetを使用することができます。

GNU Wgetは、HTTP、HTTPS およびFTPで最も広く使用されているインターネット・プロトコルを使用してファイルを取得するための無料のソフトウェアパッケージです。

"C:\Program Files (x86)\GnuWin32\bin\wget.exe" --no-check-certificate https://www.exammple.com/YouController/YourAction -O NUL 
:それは簡単になど スクリプト、cronジョブ、X-Windowsのサポートなしで端末から

と呼ばれるように、それはあなたが、その後のような何かをするだろう、 非対話型のコマンドラインツールです。

.batファイルに保存し、必要なときにWindowsのスケジュールされたタスクを実行するように設定します(60秒ごとに実行する必要はないと仮定します。そうした場合は別の方法があるので教えてください)。代わりにWindowsサービスを使用してbatファイルを呼び出します)。あなたが見ることができるように、すべてが行うことで正常に実行された場合も、出力を救う-O NUL一部を省略

public ActionResult YourAction() 
{ 
    //Do your code, get some stats that show it ran properly. 
    return Content("Return your stats here."); 
} 

お使いのコントローラのアクションから。

+0

時刻が日、時、分の場合は、特定の時間、EX:26/8/2016 03:44 pmまでにメールを送信したいのですか? –

+0

スケジュールされたタスクを実行するように設定できます。そのときに開始し、24時間ごとに実行するように設定します。あなたが行うことができるもう一つは、時間が正しいことを確認するアクションにチェックを追加し、そうでない場合は、1秒間スリープします。 – webnoob

0

新しいアプリケーションをWindowsサービスとして作成すると効率的です。特定の時間に開始するコードを簡単に設定できます。このソリューションでは、柔軟性と独立性が向上します。雇用を開始することができます:Windows Service to run a function at specified time

0

メールを送信するAPIを呼び出す小さなコンソールアプリケーションを作成することができます。その後、Windowsスケジューラを使用して特定の時刻に実行するようにコンソールアプリをスケジュールできます。コンソールウィンドウを表示せずに実行することさえできます。タスクのスケジュール方法の詳細については、hereまたはhereを参照してください。

関連する問題