
Por alguna razón, mi IIS no devuelve ningún archivo de fuentes. Todos regresan como 404. He verificado que las URL son correctas y los tipos MIME son correctos. Los archivos de fuentes se encuentran actualmente dentro de un proyecto .NET 4.5 que usa MVC4. Cuando muevo los archivos fuera del proyecto, al directorio raíz del servidor, los archivos se muestran bien. He verificado que no se están realizando anulaciones en el archivo web.config del proyecto sobre cómo se manejan las extensiones de archivo.
Hasta ahora, esto sucede con los archivos .TTF, .EOT, .SVG y .WOFF. Otros archivos estáticos, en el mismo directorio, se devuelven bien. ¿Existe alguna configuración en IIS8.5 que impida que se devuelvan los archivos de fuentes?
Adjunté un archivo de registro generado por el seguimiento de la solicitud fallida.
Respuesta1
Este problema parece haberse solucionado solo a medida que se trabajaba en el proyecto. Andrew Morton proporcionó algunos pasos excelentes para solucionar problemas para cualquier otra persona que tenga problemas similares. Proporcionaré una lista rápida:
Verifique que el servidor esté utilizando el tipo MIME correcto. Usando Administrador de IIS > Servidor > Proyecto > Tipos MIME. Aquí está la lista de tipos MIME que funcionan para mí:
- .eot = aplicación/vnd.ms-fontobject
- .svg = imagen/svg+xml
- .ttf = aplicación/flujo de octeto
- .woff = aplicación/x-font-woff
Si eso no funciona, verifique que el servidor web tenga permisos en la carpeta del proyecto y en la carpeta que almacena los archivos. Siguienteun tutorialayudará mucho.
Depuración adicional utilizando una herramienta comoMonitor de procesosayudará a reducir los problemas más difíciles del servidor.
Espero que esto ayude a alguien.
Respuesta2
Diagnostiqué mi resolución de esto examinando los códigos de estado en el registro de errores de la ISS.
estado-sc subestado-sc estado-sc-win32
500 0 1346
El estado de win32 indica que
ERROR_BAD_IMPERSONATION_LEVEL
1346 (0x542)
O no se proporcionó un nivel de suplantación requerido o el nivel de suplantación proporcionado no es válido.
https://docs.microsoft.com/en-gb/windows/win32/debug/system-error-codes--1300-1699-
Resulta que hay un artículo de MS sobre este fallo.
Compruebe si la identidad del grupo de aplicaciones para la aplicación respectiva forma parte de la política "Suplantar a un cliente después de la autenticación". Es un requisito que la identidad del grupo de aplicaciones forme parte de esta política, directamente o por membresía heredada.
Para verificar esta política, vaya a inicio -> ejecutar -> secpol.msc -> Políticas locales -> Asignación de derechos de usuario
Para mí, el problema era que faltaba el grupo 'IIS_IUSRS' en esta política.
Respuesta3
prueba esto:
- cree un archivo html en [el editor que elija] que escriba algo descriptivo en un navegador de modo que sepa que se ha resuelto:
delerium tremens, no es gran cosa
- Pruébelo para asegurarse de que sea HTML válido.
- colóquelo en el directorio del que provienen sus fuentes, como lo demuestran los errores 404 en las herramientas de desarrollo de [su navegador de elección] (debe ser una ruta relativa)
- navegue hasta él: ¿se resuelve?
En caso afirmativo, es un problema de configuración con los tipos MIME en su servidor de aplicaciones.
Si no, sus fuentes no se resuelven porque la ruta esperada es incorrecta; mire el error 404 para el archivo .html y debería revelar desde dónde el servidor de aplicaciones está buscando sus fuentes al mostrar una ruta unc relativa a la raíz web.