2009-07-31 16 views
4

ASP.NETでは、global.asaxにApplication_EndRequestイベントがあります。しかし、従来のASPでは、global.asaにそのような同等のイベントはありませんASPの終了要求イベントを処理する

エンドリクエストイベントを処理する方法や、何とか同じことを達成するために何らかの形でIISにフックする方法はありますか?

+0

IISのバージョンを教えてください? – AnthonyWJones

答えて

5

要求が完了した後にコードを実行するのに、特にねじれ技術を使用します。次のスニペットを考えてみましょう:

Class EndRequestHandler 
    Sub Class_Terminate() 
     '' Handler code goes here 
    End Sub 
End Class 

Set EndRequestHandlerInstance = New EndRequestHandler 

要求が終了すると、ASPは、それがClass_Terminate法だ呼び出すEndRequestHandlerInstanceを含め、グローバル変数をすべてアンロードします。これをサイト上のすべてのページで使用されるインクルードファイルに配置すると、グローバル終了要求ハンドラとして機能します。

+0

このテクニックが役立つ唯一のシナリオは、ASPで頻繁に共有するASPページの既存のセットに「終了要求」処理を導入する場合です。このコードはインクルードに入れることができます。個人的には、私はスクリプトティアダウン中に実行されているClass_Terminateで多忙を感じていません。 – AnthonyWJones

+0

なぜあなたは不快になりますか?この方法は他の点では理想的です。 – tgmdbm

1

IIS6以前(またはIIS7の古典的パイプラインアプリケーションプール)では、グローバルエンドリクエストオペレーションと同じ種類のものを実現するためには、実際にはISAPIフィルタの助けが必要です。

IIS7の統合パイプラインでは、実行されるページが従来のASPであっても、.NET End Requestコードを使用できます。

0

ノーズではありませんが、何をしようとしていますか? (各ページのフッタにデバッググッズを表示するなど)必要なものに対してはさまざまな解決策があるかもしれませんが、解決策がまったくありません(Responseバッファの内容を取得し、電線に接続)

+0

私はメモリリークを修正しようとしています。 関連するオブジェクトが終了する前に、クリーンアップが必要な循環参照があります。また、終了要求イベントは、他のそのようなクリーンアップコードを置くのに最適な場所です。 – tgmdbm

関連する問題