O IIS não atende determinadas extensões de arquivo

O IIS não atende determinadas extensões de arquivo

eu tenho esse problema estranho no servidor Win 2k3 e no IIS:

Iis possui vários sites, em um deles preciso criar um subdiretório e configurá-lo como aplicação web. Percebi que se eu criar um novo diretório e colocar algum arquivo .js/.txt nele, eles não serão atendidos pelo iis (o IE apresenta um erro: o Internet Explorer não pode exibir a página da web).

Se eu colocar os mesmos arquivos no subdiretório de outro site antigo, ele será exibido corretamente.

Ao farejar o tráfego, vi que o iis responde ao estado de conexão 200 e, em seguida, interrompe completamente qualquer conexão

http://domain.com/test2/prova.txt

GET /test2/prova.txt HTTP/1.1
Host: domain.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 200 OK

Se eu renomear o arquivo prova.txt para prova.asp, por exemplo, ele será exibido sem problemas, portanto não deve ser um problema de permissão.

Depois de fazer algumas pesquisas, descobri que isso pode ser causado pela falta de tipos MIME, verifiquei que .txt e .js estão presentes e são servidos por aspnet_isapi.dll. E aí vem outra coisa estranha: se eu remover o mapeamento MIME das propriedades do diretório, ele será exibido corretamente, mas a mesma coisa não funciona com js.

Estou realmente começando a ficar sem ideias, alguém tem alguma dica?

Desde já, obrigado.

Responder1

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 noCabeçalho HTTPaba. Clique noTipos MIMEbotão. Adicione o tipo de arquivo * com o tipo MIME "application/octet-stream".

Para IIS 7+: Abra o gerenciador IIS. Clique noservidorou site. Clique duas vezes noTipos MIMEícone de recurso. No painel Ações, clique emAdicionar. Preencha a caixa "Extensão de nome de arquivo" com * e a caixa Tipo MIME com "application/octet-stream".

O mesmo também pode ser feito em seu arquivo web.config se você estiver criando um aplicativo .NET.

Responder2

Como você mapeou essas extensões para aspnet_isapi.dll, agora você precisa informar ao ASP.NET para lidar com elas. Você fez a parte do IIS corretamente.

É um PageHandlerFactory que você precisa definir em seu httpHandlers. Encontrei esta página que cobre isso em profundidade:http://aspnet.4guysfromrolla.com/articles/011404-1.aspx.

informação relacionada