2009-04-01 8 views
16

Ich habe eine Mvc App entwickelt und getestet mit Cassini. Auf meiner Website auf GoDaddy bereitgestellt, und die Standardseite kommt gut. Klicken Sie, um sich anzumelden, und ich bekomme eine 404.Diagnose von 404 Fehlern auf IIS 7 und ASP.NET MVC

Ich bin unter IIS 7 dort ausgeführt, so dass dies unerwartet ist. Meine Routen sind ziemlich einfach:

 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" } 
     ); 

Irgendeine Idee, was weitergehen könnte oder wie ich dieses Problem beheben kann?

Antwort

27

Laufen Sie in IIS7 integrierten Modus?

Klassischer Modus von IIS7 tut nicht automatisch Erweiterungserweiterungen URLs zu ASP.NET (ähnlich wie IIS6).

Stellen Sie außerdem sicher, dass Ihr Web.config<system.webServer> Tag richtig konfiguriert ist.

+0

Danke, Mehrdad. Es stellt sich heraus, dass GoDaddy IIS 7 standardmäßig auf den klassischen Modus setzt. – Stuart

+3

12

Ich habe alles versucht, ich musste meine Web-Konfiguration so einstellen, damit es funktioniert.

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

Es hat funktioniert, Danke !!! – SirMoreno

+2

Wow, das hat wirklich funktioniert! Aber warum habe ich das Gefühl, dass es mich heimsuchen wird? – Lopsided

+0

@Lopside Tun Sie dies stattdessen. http://stackoverflow.com/a/23618629/385565 – DavidAndroidDev

22

Don't use runAllManagedModulesForAllRequests. Sie möchten, dass IIS Ressourcen wie Bilder verarbeitet.

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

Anstatt das Routing-Modul MVC hinzufügen

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

Diese Antwort hat auch funktioniert und scheint einen effizienteren (und eleganten) Ansatz zu haben. – Lopsided

+2

Diese Methode funktionierte für mich in einer ASP.NET-Web-API-Anwendung. Die App funktionierte lokal, aber wenn sie in einer anderen Umgebung bereitgestellt wurde, erhielt ich gerade eine 404 für eine Web-API-Anfrage. Die oben erwähnten Routing-Modul-Bits hinzugefügt und alles ist in Ordnung. Ähnliches Problem hier: http://stackoverflow.com/questions/15389855/asp-net-web-api-application-gives-404-when-deployed-at-iis-7. Vielen Dank! –

+0

Ich zog mir die Haare aus dem Kopf, als ich versuchte, eine MVC-App dazu zu bringen, HTTP-DELETE-Anfragen zu akzeptieren. Das hat für mich gesorgt. Vielen Dank! – Furynation

1

Ich hatte das gleiche Problem, das ich hochgeladen hat den Controller, web.config und andere Klassen, aber ich habe vergessen, der ist Ordner zu.

Nachdem ich den bin Ordner hochgeladen habe, hat es funktioniert!

Verwandte Themen