2011-05-17 5 views
11

He estado usando con éxito .less archivos en mi servidor dev Cassini (con dotless) durante unas semanas, pero cuando publico a mi servidor local de IIS que dió 404 errores. Adjuntar mi depurador a IIS no produce excepciones. También reinicié mi grupo de aplicaciones IIS y mi servidor.sin punto de archivos rinde 404 de error en IIS

¿Alguna idea?

Respuesta

31

Parece que le falta un tipo de mimo en IIS.

Para IIS7 añadir lo siguiente a su web.config:

<system.webServer> 
    <staticContent> 
     <mimeMap fileExtension=".less" mimeType="text/css" /> 
    </staticContent> 
</system.webServer> 

Para IIS6 que puede hacer (suponiendo que tiene el administrador de acceso RDP):

cscript adsutil.vbs set W3SVC/1/Root/MimeMap ".less, text/css" 

Dónde /1/ es el número de IIS del sitio .

+1

lo has clavado, gracias hombre! Stackoverflow viene al rescate de nuevo. – sisdog

+1

Mucho amor. Me encantan las soluciones instantáneas. –

+0

Para IIS6 tuve que usar 'cscript c: /Inetpub/AdminScripts/adsutil.vbs establecer W3SVC/1/Root/MimeMap" .less, text/css "' – Myster

9

Solo añadiendo (bastante tarde, me doy cuenta) mis dos bits a esta discusión.

Me encontré con los mismos síntomas y la corrección mencionada anteriormente no funcionó para mí. I hizo sin embargo, terminan encontrando otra razón para estos síntomas y una solución para esto.

La respuesta 404 en mi caso contenía el siguiente mensaje en el cuerpo de la respuesta:

/* Ha ocurrido un error. Consultar registro o ver en la máquina local. */

Esto parece indicar que se encontró menos archivo y que la solicitud estaba siendo procesada por dotLess (el mensaje se puede encontrar en el código fuente de dotLess), pero se produjo una excepción FileNotFoundException durante el procesamiento de la solicitud.

Localicé el problema en una instrucción @import que hacía referencia a un archivo .less que misteriosamente no estaba presente en el servidor IIS, aunque estaba presente en el servidor de desarrollo.

Resultó que la acción de compilación para este archivo .less problemático se estableció en Ninguno, no en el Contenido, como todos los demás archivos .less en mi proyecto.

¿Entonces la siguiente pregunta lógica era por qué en la tierra era la acción de compilación incorrecta?

Bueno, agregué el archivo como un archivo .css, luego decidí importarlo en un archivo .less y así lo renombré a .less (ya que .css es un subconjunto de .less, pero menos no importa archivos css). Repetí el proceso con un nuevo archivo .css y encontré que el problema era reproducible.

Parece que Visual Studio cambia la acción de compilación de Contenido a Ninguno detrás de escena como un efecto secundario inesperado de cambiar el nombre de .css a .less. Por lo tanto, el archivo .less renombrado no se publica en el servidor IIS.

+1

gracias +1, encontré el mismo problema al convertir algunos frameworks a .less, no pude entender por qué estaba dando un 404 hasta que eliminé todos los archivos de la publicación de VS ... –

+0

Sí, me consiguieron a mí también. Se me olvidó agregar un nuevo archivo .less al SVN que se suponía que iba a ser @ import-ed – rwalter

+0

Wow, esto me llevaba demasiado tiempo como para descubrirlo. Mi hoja de estilo principal no estaba compilada en mi versión menos y no tenía idea de por qué. Gracias. – Knostradamus

Cuestiones relacionadas