ASP.NETのちょっと内側
ASP.NET MVC のソースコードを読むにあたっての事前調査メモ。
- ISAPI(Internaet ServerApplication Programming Interface)
- HttpApplicationクラス
- HTTPモジュール
- HTTPハンドラ
- HTTPハンドラーファクトリ
リクエストに対する処理を行うクラス。最初のリクエストでインスタンスが生成され、1リクエスト毎に処理が行われる。(この辺りは設定で調整可能)
HttpApplication継承クラスが存在する場合(Global.aspx)はそれが生成される。また処理の手順毎にイベントが発生する。このイベントを捕捉する場合、
先ほどの継承クラスで対応を行う必要がある。
※参照
HttpApplicationクラスの各イベント処理を拡張する。
独自のHTTPモジュールを作成する場合は、IHttpModuleインターフェイス実装クラスを作成し、Web.configへ登録する。
(拡張は、モジュールクラス内でHttpApplicationの各イベントハンドラを実装し、Init()を実装するときにそれらをイベントを接続することで可能。)
モジュール例として、アクセスロギングクラスが考えられる。
※参照
要求種類・拡張子に対応する応答処理クラス。最終的なレスポンスはハンドラクラスが生成している。
最も身近なものは、*.aspxへの要求を処理するASP.NETページハンドラ。
独自のHTTPハンドラを作成する場合は、IHttpHandlerインターフェイス実装クラスを作成し、Web.configとIISへ登録する。
ASP.NET開発サーバーではページアクセス時に、web.configのhttpHandlersノード記述エラー(ハンドラのtypeがあいまい)が発生。動作しないっぽい。(VS2005,IIS5の場合)
使いどころとしてはアクセスチェック処理が考えられる。(画像への直接アクセス禁止など。チェックNGの場合はエラーページへリダイレクト、成功時は実ページへリダイレクトする)直接応答を生成するということはあまり行わないと思われる。
※参照
、