IIS
.NETFramework

HTTPModule の作り方

MicrosoftのIIS上のHttpModuleを作るときの注意点をいくつか。

基本的には、以下のWebサイトで全てだけど、自分用のメモ的位置づけ


参考


ISAPIとの比較

多分、以下のような対応関係がイメージしやすいかもしれない
- ISAPIフィルタとHttpModule
- ISAPI拡張とHttpHandler

ただし、ワイルドカードHttpHandleとかもあるから、1:1対応とはいえないかもしれない。


作成から登録までの基本的な流れ

  • system.web.dllに含まれているSystem.Web.IHttpModuleインターフェイスを継承してDLLを作る
  • イベントドリブンな普通のWindowsFormアプリケーションを作るような感覚で C# でコーディングできる
  • Webアプリケーション(IISマネージャで設定する)配下の「bin」というディレクトリにdllを配置する
  • アプリケーションプールと同じ.NET FrameworkのバージョンでコンパイルしたDLL(HttpModuleをコンパイルしたDLL)でないと動作しないよ
  • IISマネージャのGUIの一覧には出てこないかもしれない
  • web.configのaddタグは、system.web→httpModulesタグでもsystem.webserver→modulesタグでも一緒だと思うけど、こちらの書式が、「<add type=”[COM+ Class], [Assembly]” name=”[ModuleName]” />」
  • COM+ Class というのは、名前空間から始まってクラス名まで。(つまり、クラスのフルパスだな)
  • Assembly というのは、dllのファイル名(dllという拡張子は除く)
  • ModuleName は任意だと思うぞ

実行ユーザ名

System.Environment.UserName の結果(EndRequestイベント)は、アプリケーションプールの「全般」の「名前」でした。(.NET4 の場合は「ASP.NET v4.0」)

この人誰?

System.Security.Principal.WindowsPrincipal で、System.Security.Principal.WinsdowsPrincipal.WindowsBuiltInRoleの「User」「Administrator」「Guest」は、いずれもFalseでした。