Application_End
はあなたが探しているものです。アプリケーションは設定した設定に従ってアンロードされますが、デフォルトでは、要求が入ってからアイドル状態になるまで一定の時間稼働しますが、要求が継続している間は実行され続けます。
他のものがアプリケーションプールをリフレッシュさせる可能性があり、したがってApplication_End
が呼び出される可能性があります。特定の数の再コンパイル(aspxファイルの変更などによる)、実行中の一定期間、一定量のメモリ圧迫などがあります。これらはすべて設定可能ですが、一般的に合理的なデフォルトに設定されています。
重要なことは、Application_Start
とApplication_End
の間に時間があることが予想されますが、サーバー上で何が起きているかに基づいてどれくらいの時間があるかわからないことです。
また、アプリケーションプールがリサイクルされると、実行中のリクエストは突然停止されず、実際には新しいプロセスで処理される新しいリクエストと重複する可能性があります。つまり、古いアプリケーションプールのEnd
は、の新しいアプリケーションプールStart
の後にと呼ばれることがあります。しかし、これは重要ではありません。なぜなら、各アプリケーションには独自のAppDomainがあり、データを共有しないからです。 (しかし、それは別の方法で奇妙な行動を説明することができます。)ああ、そして最後に。それでも設定可能です!
EDIT:もう1つ追加してください!サーバーが突然停止した場合、Application_End
はではなく、となります。
なぜこの関数にDebug.Write( "end called")を配置して自分自身を見つけられないのですか? – Aristos