私は、データベース内のファイルを更新または追加するaspx Webアプリケーションを持っています。クライアントはブラウザを介してアクセスし、要件の1つは、更新が開始され、更新が継続している間にブラウザを閉じることができることです。私はブラウザを閉じた後に少し動いているように見えますが、それは止まります。 asp.netのためにアプリケーションをどのように実行し続けることができますか?ブラウザ終了後にWebアプリケーションを実行し続ける
答えて
それはWF (Workflow Foundation)で非常にうまく解決できるものです。ブラウザを終了しても残るはずのタスクのワークフローを作成します。ワークフローには、ASP.NETとは別の独自のスレッドとライブサイクルがあります。
別のWindowsサービスを作成して、Webアプリケーションからジョブをプッシュして、ユーザーが再びログインしたときにジョブのステータスを確認できます。
Windowsサービスはasp.netアプリケーションドメインに関連付けられないため、Webアプリケーションで何が起きているかに関係なく実行されます。
ウェブアプリケーションはアプリケーションプールで稼動し続けますが、最終的にリサイクルされます。ユーザーセッションが実行されている間は、アプリケーションを有効に保つ必要があります。そのため、セッションのタイムアウトを調整することで問題を解決できます。
ただし、長期実行タスクをサービスに移行する方が良い方法ですが、アプリケーションの書き換えが必要な場合があります。
通常、長期実行または非同期処理の場合、処理するバックエンドサービスに要求をディスパッチする必要があります。 Webアプリケーションを処理し続けるようにしようとすると、特にHTTPとセッションタイムアウトで問題が発生する可能性があります。
一般的なパターンは、要求をメッセージキューに置き、可能な場合にはバックエンドサービスに処理させることです。
私はこのパターンを実行しており、HTTP要求から作業を分離する必要があります。私たちが解決した方法は、スケジューリングされるイベントとして実行されるコンピューティングを抽象化することです。したがって、ブラウザのユーザーがバックエンドで長時間の(比較的)計算を必要とするアクションを実行すると、この計算には「doXYZForUser」のような名前が与えられ、(userId、params ...のような)作業キューに送信されます。将来、ユーザは再びログインして、自分の仕事のステータスを見ることができます。
私はJavaスタックとJava Message Service(JMS)を実行していますが、原則は同じです。ブラウザからの要求はイベントをキューに入れ、ブラウザはそのイベントが作業キューにあることを示すACKを返します。キューは、完全に独立して実行されるプロセスによって管理されます。これは、.NETでは単にメッセージキューと呼ばれると考えられています。キュー上のジョブが処理され、その結果は、ジョブを開始したユーザーへの参照を含む別のテーブルに置くことができるため、次回のジョブのログイン時に結果を返すことができます。
- 1. 終了後にプログラムを実行し続ける
- 2. ブラウザ()の後に実行を続ける
- 3. アプリケーション終了後のサービスの実行
- 4. 終了後に実行ダイアログ
- 5. 終了後、アプリケーションを実行し続けるにはどうすればよいですか?
- 6. iphoneでアプリケーション終了後にバックグラウンドスレッドを実行するには?
- 7. メソッドが終了した後にプログラムが実行され続けます
- 8. Visual Studio 2015のデバッグセッションの終了後にIIS Expressが実行され続ける
- 9. Webサービスリターン実行後に終了するスレッド?ここ
- 10. ブロードキャスト受信者はアプリケーション終了後も続行します
- 11. アプリケーション終了後にJNIメソッドが実行される
- 12. C#Gecko Webブラウザの表示が10秒後に終了する
- 13. アプリを終了した後にカウントダウンを続ける
- 14. アプリケーションを終了した後にサービスが終了する
- 15. キュウリシナリオ実行ごとにブラウザの終了と終了を停止する方法
- 16. アプリケーションが終了した後もブロードキャストレシーバーを稼働させ続ける
- 17. シェルスクリプトが終了したときにDockerを実行し続ける
- 18. アプリケーション終了後にMicrosoft Outlook 2010スクリプトが実行されない
- 19. Firebase:アプリケーションが終了しても、ChildEventListenerを聞き続ける
- 20. 実行後.NETコアコンテナが終了する
- 21. アプリケーションは理由なしで終了し続ける
- 22. Xamarin Androidでアプリケーションを終了した後、バックグラウンドサービスが終了する
- 23. 私はバックグラウンドで実行中に数分後にアプリケーションを終了したい
- 24. 偶発的な接続終了後のPHPの実行
- 25. 強制終了してもNSTimerを実行し続ける方法
- 26. 角度$ localStorageブラウザ終了後に保存
- 27. アプリケーションを終了してから処理を続行するC#
- 28. PHPスクリプトは、(たとえ終了後に実行を継続します)
- 29. netbeans内のプログラムは実行終了時に終了せず、「実行中のタスク」として実行し続ける
- 30. コンテンツページレスポンス終了中マスターページの継続実行
あまりにも遅い –