0

Asp.NETアプリからワーカーの開始時刻と終了時刻を記録するclockIn&clockOutモジュールがあります。

asp.netアプリケーションのcronジョブを実行して、ワーカーがその日付または週に時刻を入力していないかどうかを確認し、開始時刻と終了時刻を入力するように通知する電子メール通知を送信する方法を尋ねたいと思います。

4

3 に答える 3

15

ASP.NETはその仕事には間違ったツールです。スケジュールされたタスクで実行されるコンソールアプリケーションを作成するか、定期的にポーリングするWindowsサービスを作成することをお勧めします。ASP.NETは、純粋に要求/応答モデルを対象としています。

どちらのユーザーも、ASP.NETサイトと同じくらい簡単に、Webサイトが読み書きしているデータストアにアクセスできます。

どちらも実行していない場合は、コンソールアプリケーションの作成と実装がはるかに簡単です。Windowsサービスはそれほど悪くはありませんが、デバッグの難しさなどの余分なオーバーヘッドが発生し、コンソールアプリケーションで可能なXCOPY展開モデルと比較して特別なインストールプロセスを実行する必要があります。

本当にASP.NETで実行したい場合は、これを実行するasp.net Webページを作成し、Windowsのスケジュールされたタスクを使用して実行できます。スケジュールされたタスクは、実行可能ファイルを実行するのと同じくらい簡単に、InternetExplorerを特定のページに開くことができます。 しかし、私はそれをお勧めしません。タスクが終了したら、IEウィンドウを永久に閉じる必要があります。これは、実際には「ハックな」ソリューションです。私が純粋なWeb開発者であり、それ以上のことは知りませんでしたが、それ以降はそうではありませんでした。

于 2012-09-11T15:29:24.680 に答える
6

Jeff Atwoodは、このサイトの初期の頃に、ASP.NETでバックグラウンドタスクを実行する簡単な方法について、「ASP.NETでの簡単なバックグラウンドタスク」というタイトルのStackOverflowブログに投稿しました。タスクが比較的軽量の場合、これは悪い方法ではないかもしれません。本当にすべてを既存のASP.NETアプリ内に保持したい理由がある場合は、これが最適な方法かもしれません。

要旨:

  1. 起動時に、有効期限が固定されたアイテムをHttpRuntime.Cacheに追加します。
  2. キャッシュアイテムの有効期限が切れたら、WebRequestなどの作業を行います。
  3. 有効期限を固定して、アイテムをキャッシュに再度追加します。
于 2012-09-11T15:39:32.867 に答える
0

技術的にはcronジョブではありませんが、Webサイト内から、1日のX時間に設定されたページを呼び出すようにWebサイトを取得できます。

これは、アプリケーションの開始からタイマーで呼び出されるWebメソッド呼び出しを介して数回行いました。

基本的な説明はここにあります: コードでc#からウェブページを呼び出す

于 2012-09-11T15:34:13.110 に答える