Як дозволити завантаження .json-файлу за допомогою ASP.NET


125

Як я можу дозволити завантажувати * .json файли зі старого сайту ASP.NET (IIS6, на який я вважаю)?

Я отримую 404 сторінку замість файлу JSON.

Чи потрібно мені створити файл web.config? Що йде в ньому?


1
Ймовірно, для цього потрібно додати тип MIME .
vcsjones

1
Для використання у javascript або для збереження на hd?
Ремі

Я хочу отримати доступ до нього через jQuery.ajax (url: ...
Lea Hayes

2
Додавши, що після того, як локальний IIS має список, при наступному розгортанні він може випустити помилку на 500 серверів із дубліката списку, а потім прокоментувати його.
Том Маллард

Відповіді:


118

Додайте тип JSON MIME до IIS 6. Дотримуйтесь вказівок у розділі Налаштувати типи MIME MSDN (IIS 6.0) .

  • Розширення: .json
  • Тип MIME: application / json

Не забудьте перезапустити IIS після зміни.

ОНОВЛЕННЯ: Існують прості способи зробити це на IIS7 та новіших версіях. Оператор спеціально попросив допомоги IIS6, тому я залишаю цю відповідь такою, якою є. Але ця відповідь все ще отримує багато трафіку, хоча IIS6 зараз дуже старий. Сподіваємось, ви використовуєте щось більш нове, тому я хотів би зазначити, що якщо у вас новіша версія IIS7 або новіша версія, див. Відповідь @ ProVega нижче для більш простого рішення для цих нових версій.


1
Ура, але це на спільному хостинговому пакеті, не маючи доступу до іншого, крім web.config або глобального кодового файлу
Lea Hayes

Якщо у вас немає доступу до налаштувань IIS 6.0, і підтримка вашого провайдера не додасть для вас тип MIME, вам доведеться переключити провайдерів або новіших серверів з IIS 7.0 цього постачальника, якщо вони пропонують його, підтримати це.
Джон Адамс

1
Так, ASP.Net може передати файл через обробник ASPX або навіть просту сторінку, але ви не зможете використовувати тип файлу .json в URL-адресі, оскільки він не передасть цей запит ASP.Net час виконання. Це повинно бути чимось, що проходить через час виконання ASPX. Якщо у вас немає доступу до налаштувань IIS, це повинно бути одним із існуючих розширень, як-от .ASPX. Знову ж таки, перехід на сервер за допомогою IIS7 пропонує ще багато і простіших рішень.
Джон Адамс

1
Перезапуск пулу додатків повинен бути достатнім (це було в моєму випадку), а не перезапускати IIS взагалі.
kltft

1
@kltft Правда, перезапуск програми запустить оновлення, але, звичайно, лише для цього пулу. Ці кроки включають зміну налаштувань для всіх, а встановлення їх на непослідовному рівні налаштувань легко призведе до плутанини пізніше. Я рекомендую перезапустити весь процес iis для безпеки та безпеки. Але в крайній мірі, якщо всі згодні з плюсами / мінусами, перезапуск програми може працювати.
Джон Адамс

211

Якщо ви хочете вручну додати підтримку на свій сайт, ви можете просто додати наступне до свого web.config у розділі system.webServer :

<staticContent>
    <mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>

Це додасть "локальну" конфігурацію під IIS. Це не працює в IIS6, але працює в IIS7 і новіших.


6
Оновіть свою відповідь, щоб включити повний web.configшлях.
GFoley83

Рятувальник життя, дякую :)
Gaurav123

1
Чомусь це зіпсувало весь мій сайт - css більше не працював!
TheJeff

@TheJeff - це сталося зі мною, але це тому, що я додав два mimeMap staticContent, один для JSON (необхідний) та один для CSV (надлишковий, я вважав, що це потрібно, але у програмі IISExpressConfig вже був CSV). Тому я отримав цю помилку в будь-який час, коли я намагався отримати доступ до будь-якого статичного файлу: Cannot add duplicate collection entry of type 'mimeMap' with unique key attribute 'fileExtension' set to '.csv' Одного разу я видалив дублікат, жодних проблем.
Червоний горох

1
Це вирішить проблему при локальному запуску, але зверніть увагу при натисканні наживо. Якщо mimeMap вже налаштований глобально в IIS, ви отримаєте 500 помилок. Просто вийміть цю частину зі свого web.config у цьому випадку.
Еван

20

Вирішення проблеми: вам потрібно додати тип розширення файлу json у типи MIME

Спосіб 1

Перейдіть до IIS, виберіть свою програму та знайдіть типи MIME

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

Клацніть на Додати на панелі праворуч

Розширення імені файлу = .json

Тип MIME = application / json

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

Після додавання .json типу файлів у типи MIME , перезапустіть IIS та спробуйте отримати доступ до файлу json


Спосіб 2

Перейдіть на web.config цієї програми та додайте до неї ці рядки

 <system.webServer>
   <staticContent>
     <mimeMap fileExtension=".json" mimeType="application/json" />
   </staticContent>
 </system.webServer>

15

Додаючи підтримку для mimetype (як це запропонував @ProVega), тоді також найкраще видалити тип перед його додаванням - це запобігає несподіваним помилкам при розгортанні на серверах, де підтримка цього типу вже існує, наприклад:

<staticContent>
    <remove fileExtension=".json" />
    <mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>

Коли ви додаєте лише mimeMap, іноді він видаляє ваші стилі css, тож правильний спосіб - це видалити його спочатку, спасибі велике
sgrysoft

Шлях до конфігураційного файлу у файлі IIS7 C:\Windows\System32\inetsrv\config: applicationHost.config
OO

5

Якраз була ця проблема, але довелося знайти конфігурацію для IIS Express, щоб я міг додати типи mime. Для мене це було розміщено в, C:\Users\<username>\Documents\IISExpress\config\applicationhost.configі я зміг додати туди правильну "карту міми".


Ось чому це не працює для мене через IIS Express. На жаль, це не те, що мені хотілося б налаштовувати на кожній машині розробки, так виглядає, що я рекомендую дотримуватися .js розширення для файлів конфігурації json.
jpierson

Ви також можете зробити це в Web.Config - Подивіться на цю відповідь stackoverflow.com/a/19517275/643761
Симха Khabinsky

@SimchaKhabinsky Для мене web.config було недостатньо.
Жан-Бернар Пеллерін

3
Якщо web.config мало, ви можете додати цей рядок перед <mimeMap>вузлом: <remove fileExtension=".json" />. Вам не доведеться торкатися applicationhost.config (або machine.config). Однак, зміна цих файлів може бути корисною, якщо ви часто створюєте нові сайти і не хочете змінювати web.config для кожного сайту. Це може працювати для розробницьких середовищ, але часто ви не можете торкнутися machine.config у виробничих середовищах, тому я все-таки рекомендую внести зміни в web.config.
gilly3

1
Дякую @ gilly3 - removeключовим для мене був
harriyott

0
  1. Перейдіть до C: \ Users \ username \ Документи \ IISExpress \ config
  2. Відкрийте applicationhost.config за допомогою Visual Studio або улюбленого текстового редактора.
  3. Шукайте слово mimeMap, ви повинні знайти їх багато.
  4. Додайте наступний рядок у верхню частину списку:.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.