2011-07-24 25 views
1

私はASP.NET .NET 4.0 Webサイトを作成しています。このサイトの一部には、常に実行中のアプリケーションが必要です。通常はこれに対してWindowsサービスを作成しますが、サイトは共有ホスティング環境内でホストされます。仮想サーバーを取得しない限り、これは可能ではありません。常にASP.NETと外部Webホスティング内でアプリケーションを実行

私の最初の考えは、これを行うバックグラウンドでスレッドを実行することでした。それはApplication_Startで作成され、Application_Endで破棄されます。私は周りを見回して、これはオプションになる可能性があるようだが、私は当然Application_Startを呼び出させるためにサイトにヒットしなければならず、関連付けられたAppPoolがリクライニングされていれば、このプロセスを繰り返さなければならないだろう(だから私は信じる?!?)。

通常のASP.NET Webサイトではこれらは可能ですか?

+0

これは多くのここで質問されていますが、現時点では標準的な質問/回答を見つけるのに苦労しています。 – andynormancx

+1

これは私が考えていた質問でした。http://stackoverflow.com/questions/1395358/ – andynormancx

答えて

1

最後に、信号がセットされるのを待っている別のスレッドがありました。一度それを設定すると、それは仕事です。スレッドが常にアクティブであることを確認するために、私は、AppPoolがリサイクルされた場合、Application_Startイベントがトリガーされ、スレッドが再起動されることを確実にするために、「ダミー」ページのHTTPリクエストを行います。

0

それは常に動作しているアプリケーション」によって何を意味するかに依存します:

それがリアルタイムサービスの場合は、Webフロントエンドを有することができる場合でも、それはまだ、別のプロセスとして実行することは理にかなって。 ASP .NETサーバーは、メモリ使用やマルチスレッドなどのさまざまな面で特定のタスク(Webアプリケーションの実行、ページのレンダリングなど)を行うためにMicrosoftによって設計されたものです。そのような場合には、少なくともVDSを使用することをお勧めします。

もう1つのケースは、複雑ではない作業を定期的(毎時1時間)行うアプリケーションです。共有ホストには特定のページをトリガするメカニズムがいくつかあります。たとえば、お気に入りのバンドのツアーの日付リストを監視し、私の町でライブをするときに電子メール通知を送信するASP .NETページがあります。これは4時間ごとにホスティングされます。

関連する問題