2009-04-01 48 views
16

私はCassiniで開発され、テストされたmvcアプリケーションを持っています。 GoDaddyで自分のサイトにデプロイされ、デフォルトのページが正常に表示されます。クリックしてログインすると、404が表示されます。IIS 7とASP.NET MVCで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" } 
     ); 

何が起こっているのか、私はこれをトラブルシューティングすることができますか?

答えて

27

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

IIS7のクラシックモードはではありません。では、自動的に拡張レスURLをASP.NETにマップします(IIS6と同様)。

Web.config<system.webServer>タグも正しく設定されていることを確認してください。

+0

ありがとう、Mehrdad。 GoDaddyがデフォルトでIIS 7をクラシックモードに設定していることが分かります。 – Stuart

+3

<モジュールrunAllManagedModulesForAllRequests = "true" />

12

すべてを試してみましたが、私はこのように自分のWeb設定を設定して、動作させる必要がありました。

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 
+0

これは、ありがとうございました!!! – SirMoreno

+2

これは実際にうわー!しかし、なぜ私はそれが私の不在に戻って来る気持ちがあるのですか? – Lopsided

+0

@Lopsided代わりにこれを行います。 http://stackoverflow.com/a/23618629/385565 – DavidAndroidDev

22

Don't use runAllManagedModulesForAllRequests。 IISがイメージなどのリソースを処理できるようにします。

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

代わりに、私は同じ問題を抱えていた

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

この回答もうまくいっていて、より効率的な(そしてエレガントな)アプローチがあるようです。 – Lopsided

+2

このメソッドはASP.NET Web APIアプリケーションでうまく動作しました。このアプリケーションはローカルで罰金を科されましたが、他の環境に展開されたときには、Web APIリクエストに対して404を受け取ったばかりです。上記のルーティングモジュールのビットを追加し、すべてが問題ありません。同様の問題:http://stackoverflow.com/questions/15389855/asp-net-web-api-application-gives-404-when-deployed-at-iis-7ありがとう! –

+0

私はMVCアプリケーションがHTTP DELETE要求を受け入れるようにしようとしていました。これは私のためにそれを世話した。ありがとう! – Furynation

1

MVCルーティングモジュールを追加し、私は、コントローラ、web.configファイルや他のクラスをアップロードしますが、私はbinフォルダをアップロードするのを忘れていました。

私はbinフォルダをアップロードした後、それは働いた!

関連する問題