2011-08-04 15 views
17

Tengo un problema con un sitio ASP.NET MVC.ASP.NET MVC en IIS cae en el controlador de archivos estáticos

Estos son los detalles:

  1. ASP.NET MVC 2
  2. ASP.NET 4 canalización integrada
  3. IIS 7.5 en Windows Web Server 2008 R2

Cada vez que hago una solicitud de la aplicación obtengo el error "HTTP Error 404.0 - No encontrado" y la información de error detallada muestra que es el controlador de archivos estáticos que informa el error:

  • Módulo: IIS Web Core
  • Notificación: MapRequestHandler
  • Handler: StaticFile
  • Código de error: 0x80070002

lo que significa que la solicitud nunca entró en el MVC apilar.

Debo señalar que el IIS ya sirve un ASP.NET MVC 3 en el mismo grupo de aplicaciones y un MVC 2 en un grupo de aplicaciones ASP.ENT 2. Así que es el combo ASP.NET 2 en el grupo de aplicaciones ASP.NET 4 el que me está dando dolores de cabeza.

Básicamente, quiero actualizar la aplicación de ASP.NET MVC 2 en un grupo de aplicaciones ASP.NET 2.0 a ASP.NET MVC 2 en un grupo de aplicaciones ASP.NET 4.0.

¿Alguna idea?

Respuesta

-7

Así que encontré el error. Faltaba un documento predeterminado en la raíz, que no es necesario para las aplicaciones que usan la canalización integrada. Además, algunos cambios en Global.ascx y el registro de ruta eran necesarios, pero después de eso funcionó.

+2

Podría extenderse sobre la solución? ¿Qué cambios en global.asax por ejemplo? –

+2

Proporcione más información, por favor –

+0

La solución realmente no parece estar relacionada con el problema. – jakejgordon

24

Veo que fijo su problema, pero para cualquier persona buscando en Google:

tuve este problema y en mi caso yo sólo necesario para registrar ASP.NET 4 con IIS. Estaba borrando y volviendo a agregar webs para solucionar otros problemas y simplemente me olvidé de hacer eso. El comando que trabajó para mí era:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis -i

su propia versión .NET puede ser diferente, especialmente si usted está en el futuro, por lo que la ruta anterior puede no ser exactamente correcto.

+1

Creo que el número de versión es importante aquí. Intenté lo mismo, pero en la versión de .net Framework incorrecta. Solo lo dejo aquí, en caso de que alguien se haya perdido ese punto. Esto funcionó para mí. – snakepitbean

13

que tenían el mismo problema cuando he instalado IIS después de la instalación de Visual Studio, etc.

que era capaz de solucionar el problema cambiando mi web.archivo de configuración, añadiendo el runAllManagedModulesForAllRequests="true" a la <modules> etiqueta:

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"> 
     ... 
    </modules> 
</system.webServer> 

(Más detalles/copiado de aquí: http://www.west-wind.com/weblog/posts/2011/Mar/27/ASPNET-Routing-not-working-on-IIS-70)

+1

Y de repente comienza a funcionar. ¡Mágico, digo! – Edgar

+1

Esta opción no se debe establecer porque da como resultado _all_ solicitudes, incluidos todos los archivos estáticos que se envían a los manejadores administrados, y esto da como resultado un aumento de la memoria y el uso de la CPU. Puede pasar desapercibido en sitios de poco tráfico, pero una vez que IIS sirva megabytes de imágenes, html, js, css y otro contenido estático por segundo, su servidor se bloqueará. – user3285954

+0

Simplemente una refutación al comentario de @ user3285954, el aumento de la memoria y el uso de la CPU casi siempre es insignificante. He trabajado en algunos sitios con mucho tráfico, y esta configuración nunca me ha causado ningún problema. Sugeriría probarlo primero, y ver si realmente crea un problema de rendimiento; probablemente no lo hará. – Ryan

Cuestiones relacionadas