ASP.Net MVCをIIS 6.0で動かすと「404エラー」になるのを回避するには

2009年11月14日
  1. 拡張子「.mvc」をASP.Netにマップする設定をIISのアプリケーションマップに追加するために、スクリプト「C:\Program Files\Microsoft ASP.NET\ASP.NET MVC 1.0\Scripts\registermvc.wsf」を実行する。 ASP.Net MVC 2の場合はregistermvc.wsfがないので、下記のように手動で登録する。
    Webサイトのプロパティ->ホームディレクトリ->構成からアプリケーションの構成を開き、追加ボタンで「アプリケーションの拡張しマッピングの追加/編集を開く。
    実行可能ファイル:c:\windows\microsoft.net\framework\v4.0.30319\aspnet_isapi.dll
    拡張子:.mvc
    動詞:制限 GET,HEAD,POST
    スクリプトエンジン:チェック
    ファイルの存在を確認する:チェックなし
    に設定し、「OK」ボタンをクリックする。
  2. アプリケーションの「Global.aspx」のMapRouteを変更して、「.mvc」の拡張子をコントローラ名に追加して、「{controller}.mvc/{action}/{id}」のようにする。また、あらたにRootに対するマップを追加して、ルートUrlのアクセスを/Home/Indexにマップする。変更後のコードは下記。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace MvcApplication1
{

public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
                "Default",
                "{controller}.mvc/{action}/{id}",
                new { action = "Index", id = "" }
              );

routes.MapRoute(
              "Root",
              "",
              new { controller = "Home", action = "Index", id = "" }
            );

}

protected void Application_Start()
        {
            RegisterRoutes(RouteTable.Routes);
        }
    }
}

コメントは受け付けていません。