2016-04-25 17 views
-1

xmlファイルのデータを使用してWebアプリケーションデータベースを更新する機能を作成しました。私はこのデータベースをいつも24時間後に更新したい。私の問題は、ボタンのクリックでトリガされる必要がなく、24時間ごとに実行されるように、このメソッドをコードでどこでどのように呼び出すべきかわかりません。 助けてください。Asp.Net Webアプリケーションデータベースの自動更新機能

+1

データベースを更新するコードを独自のアプリケーションに配置し、特定の時刻に実行されるWindowsスケジュールされたタスクを作成する方法があります。ここを見てください - http://windows.microsoft.com/en-gb/windows/schedule-task#1TC=windows-7 – Alex

+0

おかげでアレックス.....しかし、私は私がそれを持つことができる別のオプションです同じアプリケーション。 –

+0

可能ですが、もう少し作業が必要になります。説明が長くなり過ぎているので、私はすぐに答えます。 – Alex

答えて

0

ASP.NETのバックグラウンドタスクの問題の一部は、スレッドを開始するための標準アプリケーションが実行されていないことです。

webappでバックグラウンドタスクを開始すると、何かによってappdomainが失敗した場合、タスクが途中で停止することがあります。深刻な問題。

これを実装する最も柔軟な方法は、DBを更新するWindowsのスケジュールされたタスクで実行される別個のアプリケーションを使用することです。これは、タスクをWebアプリケーションから完全に分離しますが、維持するのが面倒かもしれません。 ただし、何らかの理由でwebappがオフラインになっても、その時点でタスクを実行しているサーバーが動作している限り、DBは更新されます。

webappにタスクを埋め込みたい場合は、ルールセットに従ってタスクを起動し、それを自分のデバイスに残すことができるので、cronに似たものが望ましいでしょう。

クォーツスケジューラはこれを達成することができますが、作業に手を出すことはできますが、単純な作業では時として過度の作業です。複雑なスケジュールで多くのタスクを実行し、cron式を使用できるようにする、より複雑なシステムの学習には価値があります。

HangFireは同じ問題の別の解決策であり、クォーツスケジューラよりやや簡単ですが、タスクのcron設定は引き続き可能です。

HangFireを使用すると、毎日真夜中にタスクが実行されます(UpdateDBはアップデートを実行する方法です)。あなたのニーズに合わせて

RecurringJob.AddOrUpdate(() => UpdateDB(), "0 0 0 * * ?");

、HangFireはおそらく、この作業を取得する最も簡単な方法です。

以下はあなたにHangFireの概要を提供します:あなたはNuGetを使用して非常に迅速にそれを追加できるようにhttp://docs.hangfire.io/en/latest/quick-start.html

HangFireはNuGetアーカイブの中にあり、コンテキストメニューをパッケージ化し、タイミングタスクのドキュメントはこちらです:http://docs.hangfire.io/en/latest/background-methods/performing-recurrent-tasks.html

うまくいけば、これで十分です。

関連する問題