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

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

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

6 ответов

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

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

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

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

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

На IIS <7: откройте свойства сайта (или сервера). Нажмите на вкладку HTTP-заголовок. Нажмите на кнопку MIME Types. Добавьте тип файла * с типом MIME "application/octet-stream".

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

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

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

Здесь следует предостережение:

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

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

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

в IIS 7.

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

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

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

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

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

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

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

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

Другие вопросы по тегам