O IIS não pode servir a determinada extensão de arquivo

9

Estou exibindo arquivos .JSON, mas, embora o arquivo exista, o IIS continua emitindo um erro 404 quando qualquer arquivo é acessado. Eu tentei renomear um dos arquivos para o .JS, e funciona.

Qualquer ponteiro sobre qual configuração pode causar esse problema?

    
por Adrian Godong 13.07.2009 / 18:59

5 respostas

20

Por padrão, o IIS no W2K3 e superior não veiculará arquivos que não sejam do tipo MIME que ele conhece (em vez disso, retornam erros 404).

Você precisa adicionar um tipo MIME ao IIS para permitir que ele atenda a esse tipo de arquivo. Você pode configurá-lo no nível do site ou no nível do servidor.

Para definir isso para todo o servidor:

  • Abra as propriedades do servidor no Gerenciador do IIS e clique em Tipos de MIME
  • Clique em "Novo". Digite "JSON" para a extensão e "application / json" para o tipo MIME.
por 13.07.2009 / 19:09
3

Eu tive o mesmo problema. O IIS faz algo chamado filtragem de tipo MIME. Se não souber o tipo MIME de uma extensão de arquivo específica, ele retornará um erro 404.

No IIS < 7: Abra as propriedades do site (ou servidor). Clique na aba HTTP-Header . Clique no botão Tipos MIME . Adicione o tipo de arquivo * com o tipo MIME "application / octet-stream".

Para o IIS 7: Abra o gerenciador do IIS. Clique no servidor ou no site. Clique duas vezes no ícone do recurso Tipos MIME . No painel Ações, clique em Adicionar . Preencha a caixa "File Name Extension" com * e a caixa MIME Type com "application / octet-stream".

    
por 01.02.2010 / 21:22
2

Eu adicionei o tipo MIME .json - text/json ao site no IIS para visualizar no navegador como texto.

    
por 08.04.2013 / 16:47
1

Para consolidar as respostas em mais uma resposta geral:

Aqui vem a advertência:

  • A menos que um manipulador de script (mecanismo de conteúdo ativo, por exemplo, ASP / ASPX / PHP / Java / ISAPI / etc) esteja associado a eles
    • isso significa que o IIS os trata como conteúdo ativo , não arquivos estáticos
  • Arquivos de conteúdo ativo veiculados por qualquer extensão devem ter essa extensão permitida na lista de restrição Extensões de serviços da Web (também conhecidas como restrições ISAPI / CGI no IIS 7)
    • se você estiver obtendo um 404 em um tipo de conteúdo ativo no IIS 7, isso também pode significar que seu manipulador não está instalado - então você precisa instalar o componente que suporta essa extensão de arquivo (por exemplo, se .aspx arquivos geram um 404, você provavelmente não tem o ASP.Net instalado)

Se estiver com esse tipo de problema, abra os arquivos de registro da Web do site e dê uma olhada no código de sub-status (por exemplo, 404 3) para determinar exatamente por que seu site não está veiculando conteúdo para o IIS 6 ou

  • use o rastreamento de solicitação com falha
  • (ou apenas os erros detalhados no console local)

no IIS 7.

    
por 15.11.2011 / 11:11
0

Também tive este problema - e o problema acabou por ser permissões de arquivo na pasta onde o arquivo json estava armazenado. Eu respondi uma pergunta semelhante aqui .

Essas pessoas estão corretas para dizer que você precisa adicionar o tipo MIME.

O tipo MIME ativa a extensão do arquivo no servidor e o Mapeador de Manipulação informa ao IIS o que fazer com ele.

Você também precisa adicionar o manipulador de mapeamento e que você tem que ter o recurso do Windows chamado Classic Asp instalado para lidar com o mapeamento.

Veja como adicionar o manipulador de mapeamento:

  1. Abra o Gerenciador do IIS7
  2. Acesse as propriedades do Servidor IIS (ou apenas o site, se você não quiser uma configuração global)
  3. Clique em Handler Mappings
  4. Clique em Add a Script Map
  5. Insira as propriedades:
    • Caminho da solicitação: *.json
    • Executável: C:\WINDOWS\system32\inetsrv\asp.dll
    • Nome: JSON (você pode chamar o que quiser)
  6. Clique em OK e pronto. Ele deve começar a funcionar e você não precisa de uma redefinição do IIS.

Além disso, algumas pessoas dirão para você usar 'application / x-javascript' como o aplicativo do tipo mime, mas o JSON não é javascript, per se ( é um subconjunto, no entanto) e, portanto, deve ser 'application / json', já que é o tipo de mídia registrado pela IANA para JSON.

    
por 08.03.2014 / 16:41