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

IIS не может обслуживать определенное расширение файла

Я обслуживаю файлы .JSON, но даже несмотря на то, что файл существует, IIS продолжает выдавать ошибку 404 при доступе к любому файлу. Я попытался переименовать один из файлов в .JS, и он работает.

Любой указатель, какой параметр может вызвать эту проблему?

По умолчанию IIS в W2K3 и более поздних версиях не обслуживает файлы, не относящиеся к известному ему MIME-типу (вместо этого возвращает ошибку 404).

Вам необходимо добавить в IIS тип MIME, чтобы он мог обслуживать этот тип файла. Вы можете установить его на уровне сайта или на уровне сервера.

Чтобы установить это для всего сервера:

  • Откройте свойства сервера в диспетчере IIS и щелкните Типы MIME.
  • Щелкните "Новый". Введите «JSON» для расширения и «application / json» для типа MIME.

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

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

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

Я добавил MIME-тип .json - text/json на сайт в IIS для просмотра в браузере в виде текста.

Чтобы объединить ответы в еще один общий ответ:

Вот предостережение:

  • Если только обработчик сценария (движок активного содержимого, например, ASP / ASPX / PHP / Java / ISAPI / и т. д.) связан с ними
    • это означает, что IIS рассматривает их как активный контентне статические файлы
  • Файлы активного содержимого, обслуживаемые любым расширением, должны иметь это расширение, разрешенное в списке ограничений расширений веб-служб (также известный как ограничения ISAPI / CGI в IIS 7)
    • если вы получаете 404 для активного типа контента в IIS 7, это также может означать, что ваш обработчик не установлен, поэтому вам действительно нужно установить компонент, который поддерживает это расширение файла (например, если файлы .aspx генерируют 404, возможно, у вас не установлен ASP.Net)

Если вы столкнулись с подобной проблемой, откройте файлы веб-журнала веб-сайта и посмотрите на код субстатуса (например, 404 3), чтобы точно определить, почему ваш веб-сайт не обслуживает контент для IIS 6, или

  • использовать отслеживание неудачных запросов
  • (или просто подробные ошибки на локальной консоли)

в IIS 7.

У меня тоже была эта проблема - и проблема оказалась в правах доступа к папке, в которой хранился файл json. Я ответил аналогичный вопрос здесь.

Все эти люди правы, говоря, что вам нужно добавить тип MIME.

Тип MIME включает расширение файла на сервере, а обработчик сопоставления сообщает IIS, что с ним делать.

Так что вы также должны добавить обработчик сопоставления, и для этого у вас должна быть функция Windows под названием Установлен классический Asp чтобы обработать отображение.

Вот как добавить обработчик сопоставления:

  1. Откройте диспетчер IIS7
  2. Перейдите к свойствам IIS Server (или просто к сайту, если вам не нужны глобальные настройки)
  3. Нажмите на Handler Mappings
  4. Нажмите на Add a Script Map
  5. Введите свойства:
    • Путь запроса: *.json
    • Исполняемый: C:\WINDOWS\system32\inetsrv\asp.dll
    • Название: JSON (вы можете называть это как хотите)
  6. Нажмите ОК, и все готово. Он должен начать работать, и вам не нужен сброс IIS.

Кроме того, некоторые люди скажут вам использовать `application / x-javascript 'в качестве приложения mime-типа, но JSON не является javascript, как таковой (Это является подмножество), поэтому вместо него должно быть указано application / json, поскольку это зарегистрированный IANA тип носителя для JSON.

Также проверьте фильтрацию запросов в IIS. Если ".json" там и заблокирован, больше ничего работать не будет.