Estoy intentando implementar una aplicación ASP.NET MVC 3 en un servidor Windows 2008 x64 (ejecutando IIS 7.0 obviamente), e IIS no quiere para parecer servir el contenido correctamente. Todas las solicitudes generan un error 404.0 porque las solicitudes no coinciden con ningún controlador e IIS intenta utilizar el controlador StaticFile para atender las solicitudes. El problema parece estar relacionado con .NET 4.0, ya que tengo una aplicación MVC 2 funcionando perfectamente en un grupo de aplicaciones que está configurado para .NET 2.0 runtime.Obteniendo el error 404.0 para la aplicación ASP.NET MVC 3 en IIS 7.0/Windows Server 2008
No he tenido problemas para implementar esta misma aplicación en servidores IIS 7.5 en Windows 7 y Windows Server 2008 R2.
Antes del despliegue, el servidor 2008 no tiene .NET 4.0 o instalado ASP.NET MVC 3, así que aquí están los pasos que comprometido antes de la implementación de la aplicación:
- Instalado .NET 4.0
- Ran aspnet_regiis.exe (de la carpeta Framework64/v4.0.30319)
- Instalado ASP.NET MVC 3 usando el instalador plataforma web
- Aplicada MS actualizar KB980368 para permitir cierta IIS 7.0 o IIS 7.5 manipuladores para manejar peticiones cuyos URL no termines con una p eriod
Las solicitudes de recursos estáticos en la aplicación (archivos JavaScript, imágenes, etc.) se realizan sin problemas, pero cualquier solicitud a una acción MVC falla con un error 404.0. Me he dado cuenta de que IIS está utilizando el controlador StaticFile para manejar estas solicitudes, lo cual es obviamente incorrecto. Los manejadores de ASP.NET 4.0 (es decir, los manejadores ExtensionlessUrl-ISAPI-4.0 *) están definidos correctamente, por lo que yo sé, así que no tengo idea de por qué/cómo la solicitud no sería manejada por uno de estos manejadores y caería todo el hasta el controlador StaticFile.
También me encontré con el siguiente MS knowledge base article que menciona que debe asegurarse de que la redirección HTTP y la compresión de contenido estático estén habilitadas/instaladas en el servidor donde experimenta los errores 404. Lo revisé, y ambas funciones ya estaban habilitadas para mi servidor. Incluso traté de eliminar y volver a instalar las funciones en vano.
En este punto estoy completamente sin ideas de por qué esto no funciona correctamente. Pude replicar el problema en 2 servidores diferentes de IIS 7.0. ¿Qué me estoy perdiendo?
Antes que nada: eche un vistazo al Visor de eventos, puede ahorrar tiempo para encontrar la solución adecuada. – Dariusz
@Dario: no hay nada de nota en ninguno de los registros de Windows en relación con este problema. El proceso de trabajo no arroja ninguna excepción y se ejecuta correctamente en la parte superior del tiempo de ejecución 4.0. ÁSPID.NET tampoco lanza ninguna excepción porque IIS nunca lo invoca, ya que IIS intenta usar el controlador StaticFile para manejar las solicitudes. –
Para el registro, todo lo que requería era aplicar la revisión (viñeta n.º 4). – xanadont