![IIS не обслуживает некоторые расширения файлов](https://rvso.com/image/503699/IIS%20%D0%BD%D0%B5%20%D0%BE%D0%B1%D1%81%D0%BB%D1%83%D0%B6%D0%B8%D0%B2%D0%B0%D0%B5%D1%82%20%D0%BD%D0%B5%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5%20%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D1%8F%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2.png)
У меня возникла странная проблема на сервере Win 2k3 и IIS:
У Iis есть несколько сайтов, в одном из них мне нужно создать подкаталог и настроить его как веб-приложение. Я заметил, что если я создам новый каталог и положу в него какой-нибудь файл .js/.txt, то они не будут обслуживаться iis (IE выдает ошибку Internet Explorer не может отобразить веб-страницу).
Если я поместлю те же файлы в подкаталог другого старого сайта, они будут отображаться правильно.
Просматривая трафик, я увидел, что IIS отвечает состоянием соединения 200, а затем полностью разрывает любое соединение.
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
Например, если я переименую файл prova.txt в prova.asp, он отобразится без проблем, так что проблема не должна быть в правах доступа.
После некоторых исследований я выяснил, что это может быть вызвано отсутствием типов mime, я проверил, что .txt и .js присутствуют и обслуживаются aspnet_isapi.dll. И вот еще одна странность: если я удаляю сопоставление mime из свойств каталога, оно обслуживается правильно, но то же самое не работает с js.
У меня действительно заканчиваются идеи. Может, кто-нибудь подскажет?
Заранее спасибо.
решение1
У меня была та же проблема. IIS делает что-то под названием MIME-фильтрация. Если он не знает MIME-тип определенного расширения файла, он возвращает ошибку 404.
В IIS <7: Откройте свойства сайта (или сервера). Нажмите наHTTP-заголовоквкладка. Нажмите наMIME-типыКнопка. Добавьте тип файла * с типом MIME "application/octet-stream".
Для IIS 7+: Откройте диспетчер IIS. Нажмите кнопкусерверили веб-сайт. Дважды щелкнитеMIME-типыЗначок функции. В панели «Действия» щелкнитеДобавлять. В поле «Расширение имени файла» введите *, а в поле Тип MIME — «application/octet-stream».
То же самое можно сделать в файле web.config, если вы создаете приложение .NET.
решение2
Поскольку вы сопоставили эти расширения с aspnet_isapi.dll, теперь вам нужно указать ASP.NET обрабатывать их. Вы правильно выполнили часть IIS.
Это PageHandlerFactory, который вам нужно установить в httpHandlers. Я нашел эту страницу, которая подробно описывает это:http://aspnet.4guysfromrolla.com/articles/011404-1.aspx.