2009-04-01 12 views
16

I tienen una aplicación MVC desarrollado y probado con Cassini. Desplegué en mi sitio en GoDaddy, y la página predeterminada sale bien. Haga clic para iniciar sesión, y me da unaDiagnóstico de errores 404 en IIS 7 y ASP.NET MVC

404.

estoy ejecutando bajo IIS 7 allí, así que esto es inesperado. Mis rutas son bastante claras:

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

Alguna idea de lo que podría estar pasando o cómo se pueden solucionar esto?

Respuesta

27

¿Está ejecutando en modo de IIS7 integrado?

El modo clásico de IIS7 no no mapea automáticamente URLs sin extensión a ASP.NET (al igual que IIS6).

También asegúrese de que su etiqueta Web.config<system.webServer> esté configurada correctamente.

+0

Gracias, Mehrdad. Resulta que GoDaddy predetermina IIS 7 al modo clásico. – Stuart

+3

12

intentado todo, yo tenía que poner mi web.config como este, para hacer que funcione.

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

¡Funcionó, gracias! – SirMoreno

+2

¡Guau, esto funcionó! ¿Pero por qué tengo la sensación de que volverá a perseguirme? – Lopsided

+0

@Lopsided Haga esto en su lugar. http://stackoverflow.com/a/23618629/385565 – DavidAndroidDev

22

Don't use runAllManagedModulesForAllRequests. Desea que IIS maneje recursos como imágenes.

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

En vez agregar el módulo de enrutamiento MVC

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

Esta respuesta también funcionó y parece tener un enfoque más eficiente (y elegante). – Lopsided

+2

Este método funcionó bien para mí en una aplicación ASP.NET Web API. La aplicación funcionó multada localmente, pero cuando se implementó en cualquier otro entorno, acabo de recibir un 404 para cualquier solicitud de API web. Se agregaron los bits del módulo de enrutamiento señalados anteriormente y todo está bien. Problema similar aquí: http://stackoverflow.com/questions/15389855/asp-net-web-api-application-gives-404-when-deployed-at-iis-7. ¡Gracias! –

+0

Estaba tirando de mi cabello tratando de obtener una aplicación MVC para aceptar solicitudes HTTP DELETE. Esto se encargó de eso. ¡Gracias! – Furynation

1

que tenía el mismo problema, he subido el controlador, web.config y otras clases, pero me olvidé de subir la carpeta bin.

Después he subido la carpeta bin, funcionó!

Cuestiones relacionadas