2010-12-28 13 views
3

WebServiceの場合、Application_Endの呼び出しは正確に実行されますか?asp.net WebServiceでApplication_Endが呼び出されるのはいつですか?

アプリケーションがアンロードされるたびにApplication_Endが呼び出されると(Application_End global.asax)読んでいます。これは、Webサービス内のメソッドを呼び出すたびに意味がありますか?

私は、IISへの最初の呼び出しで1回だけ呼び出す必要があり、IISへの最後の呼び出しの後に(そしてリサイクルの間に)呼び出さなければならないコードがあります。 WebServiceの要求と応答...

+0

なぜこの関数にDebug.Write( "end called")を配置して自分自身を見つけられないのですか? – Aristos

答えて

8

Application_Endはあなたが探しているものです。アプリケーションは設定した設定に従ってアンロードされますが、デフォルトでは、要求が入ってからアイドル状態になるまで一定の時間稼働しますが、要求が継続している間は実行され続けます。

他のものがアプリケーションプールをリフレッシュさせる可能性があり、したがってApplication_Endが呼び出される可能性があります。特定の数の再コンパイル(aspxファイルの変更などによる)、実行中の一定期間、一定量のメモリ圧迫などがあります。これらはすべて設定可能ですが、一般的に合理的なデフォルトに設定されています。

重要なことは、Application_StartApplication_Endの間に時間があることが予想されますが、サーバー上で何が起きているかに基づいてどれくらいの時間があるかわからないことです。

また、アプリケーションプールがリサイクルされると、実行中のリクエストは突然停止されず、実際には新しいプロセスで処理される新しいリクエストと重複する可能性があります。つまり、古いアプリケーションプールのEndは、の新しいアプリケーションプールStartの後にと呼ばれることがあります。しかし、これは重要ではありません。なぜなら、各アプリケーションには独自のAppDomainがあり、データを共有しないからです。 (しかし、それは別の方法で奇妙な行動を説明することができます。)ああ、そして最後に。それでも設定可能です!


EDIT:もう1つ追加してください!サーバーが突然停止した場合、Application_Endではなく、となります。

関連する問題