ページレベル HTTP モジュール rhttpmod.dll の動作確認
概要
ここでは当サイト内 「ページレベル HTTP モジュールの開発 (サンプルコード)」 で作成した、 サンプル ページレベル HTTP モジュール DLL (rhttpmod.dll) の動作確認を行います。
rhttpmod.dll は、オブジェクトの生成・破棄の様子及びリクエストを処理した様子をデバッグトレースに出力します。
トレースの表示には DebugView を使います。 DebugView の Capture Global Win32 オプションが有効であることを確認してください。
尚、rhttpmod.dll では、何をリクエストされても C:\Temp\index.htm をレスポンスとして返します。 C:\Temp\wwwroot\index.htm をあらかじめ用意しておいて下さい。
動作確認
- DebugView を起動します。Capture Global Win32 オプションが有効であることを確認してください。
- サーバー上で Internet Explorer (IE) を起動して、http://localhost/ を要求します。
このコンテンツは確かに C:\Temp\wwwroot\index.htm です。
これを二回繰り返し、net stop w3svc で W3SVC を停止させます。
- すると、下図のように rhttpmod.dll からのトレースが DebugView に出力されます。
また、サービスの停止ではなくワーカープロセスをリサイクルしたときは以下のようなログになりました。
つまり、ファクトリオブジェクトがワーカープロセス終了時に破棄されています。
以上、まとめると、以下の流れであることが確認できました。
- ファクトリオブジェクトはモジュールの読み込み時に一度作成される。
- CHttpModule からの派生クラスは、そのオブジェクトがリクエスト毎に生成・破棄を繰り返す。
- ワーカープロセスの停止時 (明示的なリサイクルまたはサービス停止時等) に、ファクトリオブジェクトが破棄される。