2011年11月5日

IIS 6.0でASP.NET MVCアプリケーションを動かす方法

ASP.NET MVCのアプリケーションでは基本的にURLは拡張子無しになる。

http://www.example.com/myapplication/Home/

ところが、AS.NET MVCアプリケーションをただサーバーにデプロイしただけだとIIS6では上のURLは404エラーになってしまう。

そこで、IISの設定を少し変更する必要がある。

Deploying ASP.NET MVC to IIS 6
 http://blog.stevensanderson.com/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/

このブログには4つの方法があると書かれている。

方法1.aspnet_isapi.dllへのワイルドカードマッピングを追加する。

方法2.全てのURLに.aspxの拡張子を付け、ルーティングで制御する。

方法3.全てのURLに独自の拡張子を付け、ルーティングで制御する。

方法4.URLリライトを行う。



2と3はURLが格好悪くなるので避けたい。4の方法はちょっと設定が面倒そうだ。という事で1の方法を使う事にした。

ただし1の方法だと画像など静的なファイルも全てASP.NETが処理してしまうので、パフォーマンス的に不利になるとの事。

そこで次の対策も必要になる。
Overriding IIS6 wildcard maps on individual directories
http://blog.codeville.net/2008/07/07/overriding-iis6-wildcard-maps-on-individual-directories/
ここに書かれてある方法でサブディレクトリ単位でワイルドカードマッピングを適用しない様に設定出来るとの事。

これでとりあえずやって見ようと思う。


最後におまけで方法5も載っていた。

それは、

「Windows Server 2008に移行してII7を使う。」

確かに、それが一番!(笑)