Назад | Перейти на главную страницу

IIS не поддерживает определенные расширения файлов

У меня есть эта странная проблема на сервере 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.

Я действительно начинаю терять идеи, есть ли у кого-нибудь подсказка?

Заранее спасибо.

У меня такая же проблема. IIS выполняет так называемую фильтрацию типа MIME. Если ему неизвестен тип MIME определенного расширения файла, он возвращает ошибку 404.

В IIS <7: Откройте свойства сайта (или сервера). Нажми на HTTP-заголовок таб. Нажми на Типы MIME кнопка. Добавьте тип файла * с типом MIME «application / octet-stream».

Для IIS 7+: Откройте диспетчер IIS. Щелкните значок сервер или веб-сайт. Дважды щелкните значок Типы MIME значок функции. На панели Действия щелкните Добавить. Заполните поле «Расширение имени файла» знаком *, а в поле «Тип MIME» укажите «application / octet-stream».

То же самое можно сделать в файле web.config, если вы создаете приложение .NET.

Поскольку вы сопоставили эти расширения с aspnet_isapi.dll, теперь вам нужно указать ASP.NET обрабатывать их. Вы правильно выполнили часть IIS.

Это PageHandlerFactory, который вам нужно установить в ваших httpHandlers. Я нашел эту страницу, которая подробно описывает это:http://aspnet.4guysfromrolla.com/articles/011404-1.aspx.