2008-12-09 13 views
12

Tengo un sitio web que se ejecuta a través de IIS7 en Vista. El sitio se ejecuta en el puerto 88, por lo que http://localhost:88 debe mostrar la vista predeterminada/Inicio/Índice.MVC + IIS7 = Problema de CSS

Esto funciona correctamente, al igual que todas las demás vistas.

Sin embargo, un problema es el residente. Mis rutas de script apuntan a/Scripts/[FILE] y mis rutas de CSS apuntan a/Content/[FILE]. Mi suposición era que la carpeta/Content o/Scripts siempre estaría en la raíz del sitio, ya que no tengo la intención de ejecutar este sitio en una configuración de directorio virtual. Cuando las páginas se renderizan, ¡NO tienen CSS o script! Así que todo parece poco claro y el guión, obviamente, no funciona, por lo tanto, muchas de las vistas tampoco funcionan.

Este es un problema muy extraño, uno que estoy seguro es el resultado de mi falta de conocimiento alojando cosas bajo IIS7. Apreciaría cualquier ayuda que alguien pueda ofrecer. ¡Muchas gracias!

+0

¿Podría publicar el HTML prestado para que podamos ayudarlo? –

+0

Cuando intento navegar a http: // localhost: 88/Content/Site.css, aparece un mensaje de error ASPX 404. Parece que la extensión de CSS está siendo procesada por el filtro isapi de ASPNET (¡extraño como todo se sale!). –

Respuesta

13

Espero que la continuación de este hilo transmita la voluntad de garantizar que este problema no lleve a nadie al precipicio. Hay una gran cantidad de documentación en varios foros sobre cómo resolver este problema en Vista, pero no pude encontrar artículos similares para 2K8. Como se indica en este forum post, pude solucionar el problema en una máquina Vista. Por desgracia, una ejecución similar no pudo resolver el problema en 2K8.

Había verificado que el StaticFileHandler se había incluido en el archivo web.config as suggested in this blog post at apijunkie.com. Aún así, sin suerte.

Clarificación sin suerte, aquí - Mi funcionalidad del lado del servidor era perfecta. Todas las rutas de MVC funcionan como un campeón. Solo fallaron todas las representaciones de CSS y JS. Cuando el navegador apuntó directamente a los archivos CSS o JS, la página resultante fue una página de error 404 de ASP.NET 404 y no la tradicional.

Así que entré en el Administrador de IIS7 y en el cuadro de diálogo Asignaciones de controlador. Agregué un nuevo controlador que especificó el tipo System.Web.StaticFileHandler y le dí una extensión de * .CSS. Luego repetí eso para los archivos * .JS, * .PNG y * .GIF. Cuando actualicé el sitio en el navegador, todo se procesó correctamente. Las capturas de pantalla a continuación demuestran este proceso.

El Asignaciones de controlador de ventana:

handler mappings

Adición de un nuevo controlador administrado

alt text

Esta resuelto el problema, y ​​ahora tengo un MVC aplicación que funcione perfectamente alojada en W2K. Es hora de una Guinness.

+0

quise decir 2k8, por cierto. aclamaciones. –

+0

Gracias por esto. Funcionó para mí cuando me encontré con el problema también. –

+0

Usted me salvó el día. –

3

El problema estaba en la forma en que creé la aplicación. De acuerdo con el forum thread located here, necesitaba seleccionar el "Classic .NET AppPool" para solucionar mi problema. Tengo que amar el progreso!

+0

Cuando creé el grupo de aplicaciones, abandoné el modo predeterminado: 'Integrado' ... Acabo de cambiar a' Classic' y parece que funciona. Gracias – Jaider

0

Resulta que esto no es una solución para Windows 2008. Si alguien tiene alguna idea sobre cómo resolver este problema, se lo agradecería.

problema detallada:

de Windows 2K8 Server, IIS7. Tener la tubería activada y el soporte de archivos estáticos instalado. MVC funciona, pero CSS no se procesa.

¿Qué diablos?

7

Desde el Panel de control, vaya a Activar o desactivar las características de Windows, luego verifique Contenido estático en el sub-sub-sub nodo de IIS.

+0

Este fue mi problema. Yo recomendaría revisar esto primero. –

-2

El problema no radica precisamente en la autorización/autenticación, sino en los módulos que ahora gestiona el IIS. Inside system.webServer debe tener runAllManagedModulesForAllRequests establecer en false para que pueda visualizar todas las imágenes/CSS sin problemas con la autenticación.

En los sitios web de ASP.NET, el valor de runAllManagedModulesForAllRequests tenía que establecerse previamente en true para admitir el enrutamiento. Sin embargo, una vez IIS 7 ha sido actualizado con un Service Pack, el valor de runAllManagedModulesForAllRequests se puede configurar para falsa o se omite cuando se trabaja con ASP.NET enrutamiento.

Ref. http://www.iis.net/configreference/system.webserver/modules

P.S. No se olvide de añadir las siguientes líneas a la sección AppSettings de mi archivo web.config:

< add key clave = valor = valor "autoFormsAuthentication" = "false" />

< añadir "enableSimpleMembership" = "falso" />

+1

Por favor, deje de publicar copias de esta misma respuesta. No se aplica a las preguntas en las que lo está publicando. –

+0

Lo sé porque de hecho leí la pregunta. –