IIS не може обслуговувати певне розширення файлу


10

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

Будь-який вказівник, яке налаштування може викликати цю проблему?

Відповіді:


21

За замовчуванням IIS в W2K3 і вище не подаватиме файли, які не є типом MIME, про який він знає (замість цього повертають 404 помилки).

Вам потрібно додати тип MIME до IIS, щоб він міг обслуговувати цей тип файлів. Ви можете встановити його на рівні сайту або на рівні сервера.

Щоб встановити це для всього сервера:

  • Відкрийте властивості сервера в диспетчері IIS і натисніть MIME Types
  • Натисніть "Створити". Введіть "JSON" для розширення та "application / json" для типу MIME.

Я додаю новий тип MIME, перезавантажую веб-сайт, але все ще 404. Спасибі все одно, я думаю, що це може бути однією з проблем.
Адріан Годонг

Хм. Двічі перевірте, що ви змінили. Симптом "перейменований файл і він працював" є класичним показником такої поведінки.
Еван Андерсон

Потрійно це перевірили. Я припускаю, що вам не потрібно перезавантажувати весь сервер, правда?
Адріан Годонг

Хм ... я з усіх сил намагаюся сказати тобі, що робити. Я щойно зробив це сам у чистому віртуальному вікні Windows Server 2003 SP2. Я встановив IIS, створив файл "foo.json" у "C: \ inetpub \ wwwroot", перевірив, що я отримав 404, коли потрапив " localhost / foo.json " у браузері, додав тип MIME для ".JSON "/" application / json "на сайт, потім перейшов до мого ще відкритого вікна IE і натиснув F5 і побачив завантаження сторінки. Я думаю, у вас теж є щось інше.
Еван Андерсон

1
Мені також потрібно було переконатися, що розширення веб-служб увімкнено, щоб зробити цю роботу для мене ...
gandalf

3

У мене була така ж проблема. IIS робить щось, що називається фільтруванням типу MIME. Якщо він не знає тип MIME розширення файлу, він повертає помилку 404.

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

Для IIS 7: Відкрийте менеджер IIS. Клацніть сервер або веб-сайт. Двічі клацніть значок функції MIME Types . На панелі "Дії" натисніть кнопку " Додати" . Наповніть поле "Розширення імені файлу" * і поле MIME типу "application / octet-stream".



1

Щоб об'єднати відповіді в ще одну загальну відповідь:

Ось застереження:

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

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

  • використовувати Не вдалося відстежити запит
  • (або лише детальні помилки на локальній консолі)

в IIS 7.


Цей "застереження" не має сенсу: "... це означає, що IIS розглядає їх як активний вміст, а не статичні файли". Web.config оголошує файли json статичними: <staticContent> <mimeMap fileExtension = ". Json" mimeType = "application / json" /> </staticContent>

"IIS не подаватиме статичні файли, у яких не пов'язаний тип MIME, якщо з ними не пов'язаний обробник сценаріїв", як і раніше, працює як (IMO). У випадку, якщо хтось не може їх обслуговувати, це здається, що їхнє повідомлення не має цього визначення у своїх конфігураційних файлах ніде. Можливо, ваша копія Windows є нещодавнішою, ніж їхня?
TristanK

1

У мене теж була ця проблема - і проблема виявилася в дозволах на файли в папці, де зберігався файл json. Тут я відповів на подібне запитання .

Ці люди правильно сказати, що вам потрібно додати тип MIME.

Тип MIME дозволяє розширення файлу на сервері, а Мапінг-обробник повідомляє IIS, що з ним робити.

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

Ось як додати обробник карти:

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

Крім того , деякі люди скажуть вам використовувати `застосування / х-JavaScript» в якості додатку мімів-типу, але JSON НЕ JavaScript, самі по собі (це є підмножиною, проте) , і тому воно повинно бути "застосування / JSON" замість , оскільки це тип носія, зареєстрований IANA для JSON.


0

Також поставте прапорець Запросити фільтрування в IIS. Якщо ".json" є і заблокований, більше нічого не буде працювати.

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.