2009-04-01 8 views
16

j'ai une application mvc développé et testé avec Cassini. Déployé sur mon site sur GoDaddy, et la page par défaut se présente bien. Cliquez pour vous connecter, et je reçois un 404.Diagnostiquer 404 erreurs sur IIS 7 et ASP.NET MVC

Je suis en cours d'exécution sous IIS 7 il y a, donc ce qui est inattendu. Mes itinéraires sont assez simples:

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

Une idée de ce qui pourrait se passer ou comment je peux résoudre ce problème?

Répondre

27

Êtes-vous en cours d'exécution dans IIS7 mode intégré?

Le mode classique de IIS7 ne pas mappez automatiquement les URL sans extension à ASP.NET (un peu comme IIS6).

Assurez-vous également que votre tag Web.config<system.webServer> est configuré correctement.

+0

Merci, Mehrdad. Il s'avère que GoDaddy par défaut IIS 7 en mode classique. – Stuart

+3

12

tout essayé, je devais mettre ma config web comme celui-ci, pour le faire fonctionner.

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

Cela a fonctionné, merci !!! – SirMoreno

+2

Wow cela a effectivement travaillé! Mais pourquoi ai-je le sentiment qu'il reviendra me hanter? – Lopsided

+0

@Lopsided Faites-le à la place. http://stackoverflow.com/a/23618629/385565 – DavidAndroidDev

22

Don't use runAllManagedModulesForAllRequests. Vous voulez que IIS gère les ressources telles que les images.

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

ajouter au lieu du module de routage MVC

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

Cette réponse a également fonctionné et semble avoir une approche plus efficace (et élégante). – Lopsided

+2

Cette méthode a bien fonctionné pour moi dans une application ASP.NET Web API. L'application a fonctionné avec une amende locale, mais lorsqu'elle est déployée dans un autre environnement, je viens de recevoir un 404 pour toute demande d'API Web. Ajout des bits du module de routage indiqués ci-dessus et tout va bien. Problème similaire ici: http://stackoverflow.com/questions/15389855/asp-net-web-api-application-gives-404-when-deployed-at-iis-7. Merci! –

+0

Je tirais mes cheveux en essayant d'obtenir une application MVC pour accepter les requêtes HTTP DELETE. Cela en a pris soin pour moi. Merci! – Furynation

1

J'ai eu le même problème, j'uploadé le contrôleur, web.config et d'autres classes, mais j'ai oublié de télécharger le dossier bin.

Après avoir téléchargé le dossier bin, ça a marché!

Questions connexes