publicar net mvc iis7 deploy aspx asp asp.net asp.net-mvc iis-7

mvc - publish asp.net web api to iis



MVC+IIS7=Problema de CSS (5)

Tengo un sitio web que se ejecuta a través de IIS7 en Vista. El sitio se está ejecutando en el puerto 88, por lo que http: // localhost: 88 debería mostrar la vista predeterminada / Inicio / Índice.

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

Sin embargo, un problema es 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, 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!


El problema estaba en la forma en que creé la aplicación. De acuerdo con el hilo del foro que se encuentra aquí , tuve que seleccionar el "Classic .NET AppPool" para solucionar mi problema. Tengo que amar el progreso!


Resulta que esto no es una solución para Windows 2008. Si alguien tiene alguna idea sobre cómo resolver este asunto, sería apreciado.

Problema detallado:

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

¿Qué diablos?


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


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 indicó en esta publicación del foro , 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 como se sugiere en esta publicación de blog en apijunkie.com . Aún así, sin suerte.

No aclarando la suerte, aquí - Mi funcionalidad del lado del servidor fue 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 ASP.NET 404 y no la página de error 404 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.

La ventana Asignaciones de manejador:

Agregar un nuevo controlador administrado

Esto resolvió el problema, y ​​ahora tengo una aplicación MVC que funciona perfectamente alojada en W2K. Es hora de una Guinness.


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

En los sitios web ASP.NET, el valor de runAllManagedModulesForAllRequests tenía que establecerse previamente en verdadero para admitir el enrutamiento. Sin embargo, una vez que IIS 7 se haya actualizado con un Service Pack , el valor de runAllManagedModulesForAllRequests se puede establecer en falso u omitido al trabajar con el enrutamiento de ASP.NET.

Árbitro. http://www.iis.net/configreference/system.webserver/modules

PD No olvides agregar las siguientes líneas a la sección AppSettings de mi archivo web.config:

<add key = "autoFormsAuthentication" value = "false" />

<add key = "enableSimpleMembership" value = "false" />