Agregar mapeo MIME en web.config para IIS Express

178

Necesito agregar una nueva asignación MIME para las extensiones de archivo .woff a IIS Express.

Si agrego el siguiente fragmento al "applicationhost.config" de IIS Express, funciona bien:

<staticContent lockAttributes="isDocFooterFileName">
    <mimeMap fileExtension=".woff" mimeType="font/x-woff" />
    ...

Pero en realidad me gustaría agregarlo a mi "web.config" para que no todos los desarrolladores necesiten cambiar su "applicationhost.config" localmente.

Así que lo eliminé nuevamente del archivo "applicationhost.config" y agregué el siguiente fragmento al "web.config" del proyecto:

<system.webServer>
  ...
  <staticContent>
    <mimeMap fileExtension=".woff" mimeType="font/x-woff" />
  </staticContent>
</system.webServer>

Desafortunadamente, no parece funcionar de esa manera porque cuando trato de acceder a un archivo .woff termino con un error HTTP 404.3.

¿Qué estoy haciendo mal?

Martin Buberl
fuente

Respuestas:

309

Ponerlo en el "web.config" funciona bien. El problema fue que me equivoqué del tipo MIME. En lugar de font/x-woffo font/x-font-woffdebe ser application/font-woff:

<system.webServer>
  ...
  <staticContent>
    <remove fileExtension=".woff" />
    <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
  </staticContent>
</system.webServer>

Consulte también esta respuesta con respecto al tipo MIME: https://stackoverflow.com/a/5142316/135441

Actualización 4/10/2013

Spec ahora es una recomendación y el tipo MIME es oficialmente: application/font-woff

Martin Buberl
fuente
55
Según el enlace, el tipo mime actualizado ahora debería ser: application / font-woff (en lugar de application / x-font-woff en desuso).
longda
1
@ Longda Gracias por esa pista! Actualicé la respuesta para reflejar eso.
Martin Buberl
¿Este método de definir tipos MIME personalizados en web.config solo funciona en IIS Express? Lo probé en un web.config implementado en IIS 6 y no funciona (arroja 404). Si agrego el tipo MIME a través de la Consola del Administrador IIS, funciona.
Walter Stabosz
@WalterStabosz Lo anterior funciona para IIS e IIS Express 7+. Si está en IIS 6, debe configurar los tipos MIME en el servidor, consulte Configuración de los tipos MIME en IIS 6 .
Martin Buberl
59

Si alguien encuentra esto con errores como Error: no se puede agregar una entrada de colección duplicada del tipo 'mimeMap' con un atributo de clave único y / u otros scripts dejan de funcionar al hacer esta corrección, podría ayudar a eliminarlo primero de esta manera:

<staticContent>
  <remove fileExtension=".woff" />
  <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
</staticContent>

Al menos eso resolvió mi problema

Halcón
fuente
1
Gracias, eso agrega un poco de seguridad al implementar :)
rdmptn
3
Agregue esto a mi lista de características que me encantan de IIS.
QueueHammer
1
Si el servidor ya contiene un tipo mime, especificarlo en web.config probablemente cause la excepción duplicada.
The Muffin Man
19
<system.webServer>
     <staticContent>
      <remove fileExtension=".woff"/>
      <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
      <mimeMap fileExtension=".woff2" mimeType="font/woff2" />
    </staticContent>
  </system.webServer>
Mohamed.Abdo
fuente
6

Sé que esta es una vieja pregunta, pero ...

Estaba notando que mi instancia de IISExpress no estaba sirviendo archivos woff, así que no estaba buscando (Encontré esto) y luego encontré:

http://www.tomasmcguinness.com/2011/07/06/adding-support-for-svg-to-iis-express/

Supongo que mi instalación tiene soporte para SVG ya que no he tenido problemas con eso. Pero las instrucciones son trivialmente modificables para woff:

  • Abra una aplicación de consola con privilegios de administrador.
  • Navegación al directorio de IIS Express. Esto vive bajo Archivos de programa o Archivos de programa (x86)
  • Ejecute el comando:

    appcmd set config / section: staticContent / + [fileExtension = 'woff', mimeType = 'application / x-woff']

Solucioné mi problema y no tuve que meterme con algunas configuraciones malas (como si tuviera que agregar soporte para los verbos PUTy DELETE). ¡Hurra!

JayC
fuente
4

Gracias por este post Esto funcionó para usar plantillas de bigote en mi proyecto asp.net mvc. Utilicé lo siguiente y funcionó para mí.

<system.webServer>   
  <staticContent>
   <mimeMap fileExtension=".mustache" mimeType="text/html"/>
  </staticContent>
</system.WebServer>
Daman Singh
fuente
3

No estoy usando IIS Express pero estoy desarrollando contra mi Local Full IIS 7.

Entonces, si alguien más está aquí tratando de hacer eso, tuve que agregar el tipo mime para woff a través del Administrador IIS

Tipos Mime >> Haga clic en Agregar enlace a la derecha y luego ingrese Extensión: .woff Tipo MIME: application / font-woff

Nathan Prather
fuente
Gracias, esto me puso al día con la ejecución de un proyecto nuevamente. Las cosas estaban bien con IIS7.5 conmigo, pero obtuve Win8 e IIS8, y las asignaciones en la web.config del sitio se duplicaban con la configuración de IIS, lo que causaba errores para cualquier recurso estático solicitado. Eliminé los duplicados y las cosas están funcionando bien ahora.
rdmptn
3

Para resolver el problema, haga doble clic en la opción de configuración "Tipos MIME" mientras selecciona el nodo raíz IIS en el panel izquierdo y haga clic en el enlace "Agregar ..." en el panel Acciones a la derecha. Aparecerá el siguiente cuadro de diálogo. Agregue la extensión de archivo .woff y especifique "application / x-font-woff" como el tipo MIME correspondiente:

ingrese la descripción de la imagen aquí

Siga lo mismo para woff2 con application / x-font-woff2

Tarun Gupta
fuente
0

Estaba teniendo problemas para conseguir que mi aplicación ASP.NET 5.0 / MVC 6 sirviera tipos de archivos binarios estáticos o explorara directorios virtuales. Parece que esto ahora se hace en Configure () al inicio. Consulte http://docs.asp.net/en/latest/fundamentals/static-files.html para obtener una introducción rápida.

Brian Wirt
fuente