ASP.NETでは、global.asaxにApplication_EndRequestイベントがあります。しかし、従来のASPでは、global.asaにそのような同等のイベントはありませんASPの終了要求イベントを処理する
エンドリクエストイベントを処理する方法や、何とか同じことを達成するために何らかの形でIISにフックする方法はありますか?
ASP.NETでは、global.asaxにApplication_EndRequestイベントがあります。しかし、従来のASPでは、global.asaにそのような同等のイベントはありませんASPの終了要求イベントを処理する
エンドリクエストイベントを処理する方法や、何とか同じことを達成するために何らかの形でIISにフックする方法はありますか?
要求が完了した後にコードを実行するのに、特にねじれ技術を使用します。次のスニペットを考えてみましょう:
Class EndRequestHandler
Sub Class_Terminate()
'' Handler code goes here
End Sub
End Class
Set EndRequestHandlerInstance = New EndRequestHandler
要求が終了すると、ASPは、それがClass_Terminate
法だ呼び出すEndRequestHandlerInstance
を含め、グローバル変数をすべてアンロードします。これをサイト上のすべてのページで使用されるインクルードファイルに配置すると、グローバル終了要求ハンドラとして機能します。
このテクニックが役立つ唯一のシナリオは、ASPで頻繁に共有するASPページの既存のセットに「終了要求」処理を導入する場合です。このコードはインクルードに入れることができます。個人的には、私はスクリプトティアダウン中に実行されているClass_Terminateで多忙を感じていません。 – AnthonyWJones
なぜあなたは不快になりますか?この方法は他の点では理想的です。 – tgmdbm
IIS6以前(またはIIS7の古典的パイプラインアプリケーションプール)では、グローバルエンドリクエストオペレーションと同じ種類のものを実現するためには、実際にはISAPIフィルタの助けが必要です。
IIS7の統合パイプラインでは、実行されるページが従来のASPであっても、.NET End Requestコードを使用できます。
ノーズではありませんが、何をしようとしていますか? (各ページのフッタにデバッググッズを表示するなど)必要なものに対してはさまざまな解決策があるかもしれませんが、解決策がまったくありません(Responseバッファの内容を取得し、電線に接続)
私はメモリリークを修正しようとしています。 関連するオブジェクトが終了する前に、クリーンアップが必要な循環参照があります。また、終了要求イベントは、他のそのようなクリーンアップコードを置くのに最適な場所です。 – tgmdbm
IISのバージョンを教えてください? – AnthonyWJones