web-dev-qa-db-ja.com

IIS 7およびASP.NET MVCでの404エラーの診断

Cassiniで開発およびテストしたmvcアプリを持っています。 GoDaddyの私のサイトにデプロイしました。デフォルトのページが表示されます。クリックしてログインすると、404が表示されます。

私はそこでIIS 7の下で走っているので、これは予想外です。私のルートはかなり明白です:

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default",                                              
            "{controller}/{action}/{id}",                           
            new { controller = "Public", action = "Index", id = "" } 
        );
        routes.MapRoute(
            "Report1",
            "Report/{action}/{start}/{end}",
            new { controller = "Report", action = "Index" }
        );
        routes.MapRoute(
            "Report2",
            "Report/{action}/{start}/{end}/{idList}",
            new { controller = "Report", action = "Index" }
        );

何が起こっているのか、またはこれをトラブルシューティングする方法はありますか?

19
Stuart

IIS7で実行していますか統合モード

IIS7のクラシックモードはnot拡張子のないURLをASP.NETに自動的にマップします(IIS6と同様)。

また、あなたのWeb.config<system.webServer>タグが正しく構成されている。

29
Mehrdad Afshari

runAllManagedModulesForAllRequestsを使用しないでください 。 IIS画像などのリソースを処理させます。

<system.webServer> <!-- Rather do NOT use this -->
  <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

代わりに、MVCルーティングモジュールを追加してください

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>
23
Chris Herring

すべてを試しましたが、機能させるには、このようにWeb構成を設定する必要がありました。

 <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
14
Stasevich

同じ問題が発生しました。コントローラー、web.config、その他のクラスをアップロードしましたが、binフォルダーをアップロードするのを忘れました。

Binフォルダーをアップロードした後、うまくいきました!

1