ページレベル 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 をあらかじめ用意しておいて下さい。

動作確認

  1. DebugView を起動します。Capture Global Win32 オプションが有効であることを確認してください。

  2. サーバー上で Internet Explorer (IE) を起動して、http://localhost/ を要求します。

    このコンテンツは確かに C:\Temp\wwwroot\index.htm です。

    これを二回繰り返し、net stop w3svc で W3SVC を停止させます。

  3. すると、下図のように rhttpmod.dll からのトレースが DebugView に出力されます。

また、サービスの停止ではなくワーカープロセスをリサイクルしたときは以下のようなログになりました。

つまり、ファクトリオブジェクトがワーカープロセス終了時に破棄されています。

以上、まとめると、以下の流れであることが確認できました。

  1. ファクトリオブジェクトはモジュールの読み込み時に一度作成される。
  2. CHttpModule からの派生クラスは、そのオブジェクトがリクエスト毎に生成・破棄を繰り返す。
  3. ワーカープロセスの停止時 (明示的なリサイクルまたはサービス停止時等) に、ファクトリオブジェクトが破棄される。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Web/DB プログラミング徹底解説