IIS 7.5 no carga páginas html estáticas

10

Hay un IIS 7.5 recién instalado en un servidor dedicado. La aplicación web ASP.NET 4.0 copiada en su carpeta, el nuevo sitio web se crea con su propia IP en la publicación 80, las cuentas IIS_IUSR e IUSR tienen derechos de lectura / ejecución en la carpeta del sitio, el sitio se asigna a su propio grupo de aplicaciones integrado con 4.0 .NET (Probé el grupo clásico con los mismos resultados).

El problema: cuando intento acceder a este sitio web, el navegador solo carga contenido generado por recursos .NET, como páginas aspx, archivos .axd, etc. Las imágenes estáticas, los archivos estáticos js, css y html están en el origen de la página, pero IIS no No les sirva. Las herramientas de desarrollo en todos los navegadores se quejan de que el servidor ha enviado todos esos recursos estáticos con un tipo de contenido incorrecto (texto plano en lugar de imagen, estilos, etc.). ¿Qué hago mal?

Kizz
fuente
¿Qué ves en Fiddler (o Firebug)?
SLaks
Si es posible, ejecute la página en el servidor, ejecute especialmente solo el contenido estático en el servidor y obtendrá un informe de error completamente detallado.
Aristos
Yo no uso Firebug. Pero Chrome, por ejemplo, se queja de "Recurso interpretado como Imagen pero transferido con texto tipo MIME / sin formato" sobre un archivo jpg en la página. Lo mismo para todos los estilos, js y páginas html estáticas. Además, las cargas dinámicas de scripts y html no funcionan.
@ Aristos: hice eso. El navegador del servidor muestra la página de la misma manera que los navegadores externos. Sin errores, solo página incompleta.
¿El usuario que ejecuta el servidor web tiene derecho a leer esos archivos?
Luc M

Respuestas:

12

IIS 7 / 7.5 tiene una nueva "característica": Servicios de roles. La publicación de rsbarro me recordó que hay un servicio de rol responsable del contenido estático. Es Servidor web / Características HTTP comunes / Contenido estático. Compruebe si el icono de Tipos MIME está presente en el Administrador de IIS, como sugirió rsbarro.

Debe instalar el servicio de rol Contenido estático si no lo hace. Para hacer eso, seleccione el:

  • Administrador del servidor
  • Roles
  • Nodo Servidor web (IIS) desde el panel izquierdo
  • desplazarse a la ventana Servicios de roles
  • ver si el servicio de rol Contenido estático está instalado.

Por lo que describe, este parece ser su problema.

En general, si IIS7 no hace algo que hizo IIS6, lo primero que debe verificar es ver si está instalado el servicio de rol correspondiente. Espero que esto ayude.

Vlad
fuente
Rol de contenido estático, ¿cómo me perdí eso? Gracias, solucionó el problema perfectamente.
David Thomas Garcia
6

En IIS, vaya a su sitio web y consulte la sección Tipos MIME (vea la imagen a continuación). Asegúrese de ver entradas en esa lista para .js, .css, .html, etc., y que tengan el tipo MIME correcto especificado. IIS 7.5 solo servirá páginas si hay un tipo MIME especificado. De manera predeterminada, los tipos MIME para estas extensiones se configuran en el applicationHost.configarchivo ubicado en la C:\Windows\system32\inetsrv\configcarpeta (es posible que deba ejecutar el bloc de notas como administrador para ver el archivo). Simplemente busque .js y debería encontrar una entrada debajo <mimeMap>en el <staticContent>elemento.

iis tipos mimo

Estas configuraciones se pueden anular en su web.configarchivo. Si lo son, aparecerán en la siguiente ubicación en web.config:

<system.webServer>
    <staticContent>
        <remove fileExtension=".js" />
    </staticContent>
</system.webServer>

Definitivamente comenzaría por verificar allí. Si todo parece correcto en la sección de tipos MIME, es posible que tenga un módulo que interfiera con las solicitudes de archivos estáticos (pero lo más probable es que solo lo haya <modules runAllManagedModulesForAllRequests="true" />configurado en su <system.webServer>sección). Si ese es el caso, eliminaría la configuración de todos los módulos en su web.configy vería si puede abrir los archivos estáticos, y luego los leeré uno por uno para ver qué módulo está causando el problema. Si no puede resolverlo, le sugiero que publique el contenido de su web.config(o al menos las secciones system.weby system.webServer) en la pregunta.

rsbarro
fuente
2

Tuve el mismo problema, pero mi grupo de aplicaciones se ejecutaba bajo una cuenta de dominio y ese usuario tenía derechos sobre la carpeta del sitio web. Mi sitio web representaba aspx pero no contenido estático. Lo que resolvió mi problema fue agregar el grupo IIS_IUSRS a la política de seguridad local llamada "suplantar a un cliente después de la autenticación". El grupo IIS_IUSRS tenía mi cuenta de dominio en él. Estoy ejecutando iis 7.5 Windows 2008 Server.

a tiempo parcial
fuente
Ojalá pudiera votar más de una vez. Llegué a esta pregunta mientras buscaba por qué IIS no estaba sirviendo mis archivos .css. Estaba relacionado con los permisos de Windows en las carpetas donde estaban almacenados.
2b77bee6-5445-4c77-b1eb-4df3e5