Adicionar mapeamento MIME no web.config para o IIS Express

178

Preciso adicionar um novo mapeamento MIME para extensões de arquivo .woff ao IIS Express.

Se eu adicionar o seguinte trecho ao "applicationhost.config" do IIS Express, ele funcionará bem:

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

Mas, na verdade, gostaria de adicioná-lo ao meu "web.config" para que nem todos os desenvolvedores precisassem alterar seu "applicationhost.config" localmente.

Então, removi-o novamente do arquivo "applicationhost.config" e adicionei o seguinte trecho ao "web.config" do projeto:

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

Infelizmente, não parece funcionar dessa maneira, porque quando tento acessar um arquivo .woff, acabo com um erro HTTP 404.3.

O que estou fazendo de errado?

Martin Buberl
fonte

Respostas:

309

Colocá-lo no "web.config" funciona bem. O problema foi que eu entendi errado o tipo MIME. Em vez de font/x-woffou font/x-font-woffdeve ser application/font-woff:

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

Consulte também esta resposta sobre o tipo MIME: https://stackoverflow.com/a/5142316/135441

Atualização 4/10/2013

Agora, Spec é uma recomendação e o tipo MIME é oficialmente: application/font-woff

Martin Buberl
fonte
5
De acordo com o link, o tipo mime atualizado agora deve ser: application / font-woff (em vez de application / x-font-woff obsoleto).
Longda
1
@ Longda Obrigado por essa dica! Eu atualizei a resposta para refletir isso.
precisa saber é o seguinte
Esse método de definição de tipos MIME personalizados no web.config funciona apenas no IIS Express? Eu tentei em um web.config implantado no IIS 6 e não funciona (lança 404). Se eu adicionar o tipo MIME por meio do Console do Gerenciador do IIS, ele funcionará.
Walter Stabosz
@WalterStabosz O exemplo acima funciona para o IIS e o IIS Express 7+. Se você estiver no IIS 6, precisará configurar os tipos MIME no servidor, consulte Configurando tipos MIME no IIS 6 .
Martin Buberl
59

Se alguém encontrar isso com erros como Erro: não é possível adicionar uma entrada de coleção duplicada do tipo 'mimeMap' com atributo de chave exclusivo e / ou outros scripts parem de funcionar ao fazer essa correção, pode ajudar a removê-la primeiro assim:

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

Pelo menos isso resolveu meu problema

Falcão
fonte
1
Graças, que adiciona alguma segurança ao implantar :)
rdmptn
3
Adicione isso à minha lista de recursos que eu amo no IIS.
QueueHammer
1
Se o servidor já contiver um tipo MIME, especificá-lo no web.config provavelmente causará a exceção 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
fonte
6

Eu sei que esta é uma pergunta antiga, mas ...

Eu estava percebendo que minha instância do IISExpress não estava servindo arquivos woff, então não estava pesquisando (encontrei isso) e encontrei:

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

Suponho que minha instalação tenha suporte para SVG, pois não tive problemas com isso. Mas as instruções são trivialmente modificáveis ​​para o woff:

  • Abra um aplicativo de console com privilégios de administrador.
  • Navegação para o diretório do IIS Express. Ele está localizado em Arquivos de Programas ou Arquivos de Programas (x86)
  • Execute o comando:

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

Resolvi meu problema e não precisei mexer em algumas configurações ruins (como tive que adicionar suporte para os verbos PUTe DELETE). Yay!

JayC
fonte
4

Obrigado por este post. Eu trabalhei isso usando modelos de bigode no meu projeto asp.net mvc, usei o seguinte e funcionou para mim.

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

Não estou usando o IIS Express, mas desenvolvendo com o meu Local Full IIS 7.

Então, se alguém mais estiver aqui tentando fazer isso, eu tive que adicionar o tipo mime para woff via IIS Manager

Tipos de MIME >> Clique em Adicionar link à direita e digite Extension: .woff Tipo MIME: application / font-woff

Nathan Prather
fonte
Obrigado, isso me atualizou com a execução de um projeto novamente. Tudo estava bem com o IIS7.5 comigo, mas eu obtive o Win8 e o IIS8 e os mapeamentos no web.config do site estavam sendo duplicados com a configuração do IIS, causando erros em qualquer recurso estático sendo solicitado. Eu removi as duplicatas e as coisas estão indo bem agora.
Rdmptn
3

Para resolver o problema, clique duas vezes na opção de configuração "Tipos MIME" enquanto o nó raiz do IIS está selecionado no painel esquerdo e clique no link "Adicionar ..." no painel Ações, à direita. Isso exibirá a seguinte caixa de diálogo. Adicione a extensão de arquivo .woff e especifique "application / x-font-woff" como o tipo MIME correspondente:

insira a descrição da imagem aqui

Siga o mesmo para woff2 com application / x-font-woff2

Tarun Gupta
fonte
0

Estava com problemas para fazer meu aplicativo ASP.NET 5.0 / MVC 6 servir tipos de arquivos binários estáticos ou procurar diretórios virtuais. Parece que agora isso é feito no Configure () na inicialização. Consulte http://docs.asp.net/en/latest/fundamentals/static-files.html para obter uma introdução rápida.

Brian Wirt
fonte