2

サーバー上のデータベースへのアクセスを提供する ASP.NET Web アプリがあります。私が必要としているのは、特定のスケジュールでバックグラウンドでコードを実行し、別のソースからサーバー データベースを自動更新する方法です。

タイマーを追加し、関数をタイマーティックイベントにリンクし、タイマーを開始することにより、Windowsアプリでこれを行う方法を知っています。Web アプリでこれを行う方法がわかりません。

ユーザーがサイトで何をしているかに関係なく、このバックグラウンド プロセスを開始できる Web アプリまたはどこかの開始イベントはありますか?

4

6 に答える 6

6

ASP.NETWebサイトでこれを行うべきではありません-これは主要なノーノーです。バックグラウンドの.exeでタイマーを使用することを考えるのは正しいです。Windowsタスク(サーバータスクタイマーによって実行されるコンソール.exe)またはWindowsサービスの作成を検討する必要があります。それが標準的な方法であるため、Windowsサービスをお勧めします。

于 2012-07-02T19:44:47.910 に答える
4

サイトをホストしているコンピューターにアクセスできる場合は、タスクスケジューラから実行される小さなアプリを作成します。

Webサーバーは、長時間実行されるバックグラウンドタスクを処理するためのものではありません。それは間違ったツールです。

ホスティングコンピュータにアクセスできない場合は、別のコンピュータがデータベースを再構築してアップロードするための何らかのインターフェイスを構築することをお勧めします。私は「インターフェース」と「アップロード」という用語を最も緩く、最も広い意味で使用しています。独自の定義を適用してください。

于 2012-07-02T19:44:12.540 に答える
1

私は数か月前に自分で解決策を探していましたが、これまで試してみるのに十分な時間がありませんでしたが、リンクを共有できると思います. 多分あなたはそれが役に立つと思うでしょう。

はいの場合は、ここでお知らせください。

http://quartznet.sourceforge.net/

ASP.NET で Quartz.net を使用する方法

于 2012-07-02T19:48:34.753 に答える
0

他の回答が述べているように、この完全な機能を実行する - データベースを更新し、ASP.NET アプリとしてスケジュールすることは、ジョブに間違ったツールを使用しています。

ASP.NET を使用してデータベースを更新できます。これは完全に有効です。それが壊れるところはタイマーにあります。 ASP.NET アプリは、タイマーが機能するために必要な長時間実行することを意図していません。

あなたがそれを行うことができれば、他の人が提案したアプローチ - Windows サービスまたはスケジュールされたタスクを使用することを強くお勧めします。

ただし、ASP.NET コードを投稿する以外に実際のサーバーにアクセスできない場合は、サービスをインストールできず、Windows アプリを定期的に実行するように設定することもできません。 -ボックスのアイデア。


更新を行う Web サービスまたは ASPX ページをセットアップし、自分が制御するマシン上のスケジュールされたタスクからそのページを呼び出します。

したがって、これがhttp://www.someserver.net/updatedb.aspxにあった場合、自分の PC でスケジュールされたタスクを設定してその URL を呼び出すことができない理由はありません。

これは、他のオプションのいずれかを実行できない場合にのみ使用する最後の解決策と考えています。

于 2012-07-02T20:05:28.893 に答える
0

Windows サービスを使用するか、Timer Control を使用できます (Ajax カテゴリ内)。

ここに画像の説明を入力

または

ここに画像の説明を入力

于 2012-07-02T19:48:49.013 に答える
-1

global.asax.csファイルには、アプリケーションの起動時に起動されるメソッドApplication_Startがあります。その場合、タイマーメソッドを接続できます。IISの構成方法によっては、アプリプールがシャットダウンする可能性があることに注意してください。たとえば、20分以内に誰もサイトにアクセスしなかった場合などです。これをX分ごとに実行する必要がある場合は、IISが常に実行されるように構成されていることを確認し、アプリを起動してください。これは思ったより難しいです。最後に、通常のWindowsスケジュールタスクを使用することをお勧めします。

于 2012-07-02T19:45:47.250 に答える