趣味は車輪の再発明♪

ASP.NETのMVCアプリがHTTP 404になる場合のチェック項目



ASP.NET の MVC2を使用したWEBアプリケーションをIISで動かすと「ページが見つかりません」というエラーが出てしまう、、、てな場合の対処法です。

現象

上に書いたとおり。

原因

絶対とは言いきれないですけど、IISでの「マッピング情報のチェックボックスの外し忘れ」がアヤシイかな?と思います。

「トップページは表示されるけど他のページは404」なんて時は、おそらくほとんど間違いなく絶対にコレです(多分)。 アプリケーション名でアクセスしたときにトップページがちゃんと表示されるのは、Global.asaxで特別にマッピングされているからですね。

対処

MVCなので、全ての拡張子をASPXに処理させるマッピング情報(どんなURLが指定されてもASPXとして扱うという設定)を追加しているはずですが、 その設定で「ファイルの存在を確認する」チェックボックスにチェックが付いてたら、はずしましょう。

確認手順

  1. IISのWEBアプリケーションのプロパティダイアログで[仮想ディレクトリ]タブの[構成(G)]をクリック
  2. 「アプリケーションの構成」ダイアログの[マッピング]タブ「アプリケーションのマッピング」リストから、拡張子が「.*」のマッピング情報を選択して[編集(E)]ボタンをクリック
  3. 「アプリケーションの拡張子マッピングの追加/編集」ダイアログ表示

このダイアログで、「ファイルの存在を確認する(C)」というチェックボックス(赤枠内)にチェックが付いていないことを確認します。

補足

404エラーは、IISさんがURLに該当するサーバー上の実ファイルを探して「そんなファイルはありません」と言っているのですが、 MVCでは、そもそも実ファイルがなくて当然(URLを書き換えて、コントローラとアクションを決定しているので)。 ということで、IISにファイルの存在をチェックさせないように設定するということです。

環境

この記事は、以下の環境で検証したものです。

  • Web Server : IIS 5.1
  • IDE : Visual Studio 2010 ASP.NET MVC2使用
  • OS : Windows xp Service Pack 3


RSS Feed Widget
ASP.NETのMVCアプリがHTTP 404になる場合のチェック項目
(http://bicycle.life.coocan.jp/takamints/index.php/techtips/aspnetmvc404)
by Koji Takami ( email: vzg03566@gmail.com, GitHub: takamin )