ルーティング機能
ASP.NETのルーティング機能。ASP.NET MVCのそれがASP.NETへ統合されたらしい。
ルーティングの有効化
IIS7.0以前のバージョンで使用する場合、modulesノードへUrlRoutingModuleを追加する必要がある。
以降の場合はmodulesノードのrunAllManagedModulesForAllRequests属性値をtrueにすることで、
すべてのリクエストに対してルーティングが適用されるようになる。
ルーティングテーブル
HttpApplicationのApplication_Startイベントでルーティングテーブルをセットアップする。
- ASP.NETの場合
- ASP.NET MVCの場合
ルーティング処理
HttpApplicationのPostResolveRequestCache、PostMapRequestHandlerイベントで
UrlRoutingModuleモジュールによるルーティングが行われる。
一致するルートが存在しなかった場合は以降の処理を通常ASP.NETフロー?で行う。
最初に一致したルート情報(Routeオブジェクト)のGetHttpHandler()から、IHttpHandlerオブジェクトを取得し、これをHttpApplicationに渡す? (それぞれ、HttpHandlerクラス、MVCHandlerクラス)
最初に一致したルート情報(Routeオブジェクト)のGetHttpHandler()から、IHttpHandlerオブジェクトを取得し、これをHttpApplicationに渡す? (それぞれ、HttpHandlerクラス、MVCHandlerクラス)
ハンドラ処理
HttpApplicationのPreRequestHandlerExecuteイベント直後に行われる。
アクションメソッドの実行はcontrollerが持つ、ControllerActionInvokerクラスオブジェクトによって実行される。 この時に、コントローラーのフィルタリング属性なども処理される。
- ASP.NET MVCの場合
アクションメソッドの実行はcontrollerが持つ、ControllerActionInvokerクラスオブジェクトによって実行される。 この時に、コントローラーのフィルタリング属性なども処理される。