Почему мой файл json не найден?

85

У меня есть файл json в папке Content в моем проекте asp.net:

<projectName>
    \Content
        NBCCJr.json

... и код для доступа к нему:

$.getJSON('~/Content/NBCCJr.json', function (data) {
    $.each(data, function(i, dataPoint) {
        // Bla
      });
  });
)

... но при вызове кода ничего не происходит; консоль браузера сообщает: «Не удалось загрузить ресурс: сервер ответил статусом 404 (не найден)»

Почему его не нашли? Разве "тильда ударить имя файла" не является правильным путем к файлу?

ОБНОВИТЬ

Еще попробовал с "ударами" задом наперед:

$.getJSON('~\Content\NBCCJr.json', function (data) {

... и получил тот же результат (« Не удалось загрузить ресурс: сервер ответил статусом 404 (не найден) »)

ОБНОВЛЕНИЕ 2

Затем я попробовал это без предварительного удара так:

$.getJSON('Content/NBCCJr.json', function (data) {

... и я получаю это неоднозначное сообщение в консоли:

*GET http://localhost:9702/Content/NBCCJr.json 404 (Not Found) jquery.js:8724
XHR finished loading: "http://localhost:9702/Content/NBCCJr.json".*

Значит, его не нашли и все равно загрузили?

ОБНОВЛЕНИЕ 3

Когда я попытался перейти к файлу в браузере, изменив:

http://localhost:9702/Default.cshtml

... чтобы:

http://localhost:9702/Content/NBCCJr.json

Я получил информативное сообщение WSOD от Винта Серфа, Тима Бернерса-Ли и / или Эла Гора:

Ошибка HTTP 404.3 - не найдена Запрашиваемая страница не может быть обслужена из-за конфигурации расширения. Если страница представляет собой сценарий, добавьте обработчик. Если файл должен быть загружен, добавьте карту MIME.

ОБНОВЛЕНИЕ 4

Благодаря JAM теперь он работает.

Мне пришлось добавить это в Web.Config:

  <system.webServer>
    <staticContent>
      <mimeMap fileExtension=".json" mimeType="application/json" />
    </staticContent>
  </system.webServer>
Б. Клэй Шеннон
источник
Пока не беспокойтесь о коде, посмотрите, сможете ли вы найти файл в своем браузере, чтобы начать с
Ли Тейлор
По этой причине я закомментировал весь код после показанной строки. IOW, функция пуста.
B. Clay Shannon
Удалось ли вам показать json в браузере? т.е. размещение URL-адреса прямо в адресной строке?
Ли Тейлор
@greg: Что он «сжимал»?
B. Clay Shannon
2
Обновление 4 решено для меня! Thks \ o /
Rodrigorf

Ответы:

97

Вы пытались удалить ~?

Как в:

$.getJSON('/Content/dumboJr.json', function (data) {
    $.each(data, function(i, dataPoint) {
        // Bla
      });
  });
)

Чтобы разрешить IIS обслуживать файлы JSON, попробуйте добавить это в свой web.config:

<staticContent>
    <mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
ВАРЕНЬЕ
источник
Да (теперь есть). Это: $ .getJSON ('/ Content / NBCCJr.json', function (data) {дает тот же ответ.
Б. Клей Шеннон,
Это ответ 404? Вы пробовали перейти к файлу прямо в браузере? Находится ли папка Content в корне вашего веб-проекта?
JAM
Да, в сообщении говорится об этом. Пожалуйста, смотрите мои обновления. Да, Content - это папка первого уровня, как указано в исходном сообщении.
B. Clay Shannon
Взгляните на этот пост .
JAM
Если вы добавите указанный mime-тип web.config, все будет в порядке :)
JAM
22

Решение: вам нужно добавить тип расширения файла json в типы MIME.

Способ 1

Перейдите в IIS, выберите свое приложение и найдите типы MIME.

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

Нажмите "Добавить" на правой панели.

Расширение имени файла = .json.

Тип MIME = приложение / json

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

После добавления .json типа файла в MIME типов , Restart IIS и попытаться файл JSON доступа


Способ 2

Перейдите в web.config этого приложения и добавьте в него эти строки

 <system.webServer>
   <staticContent>
     <mimeMap fileExtension=".json" mimeType="application/json" />
   </staticContent>
 </system.webServer>
Каушал Хамар
источник
2

Попробуйте поместить файл * .json в webRoot, а не в подпапку. А затем ссылайтесь на это как:

$.getJSON('NBCCJr.json', function (data) {

Это, конечно, требует предыдущего включения и создания экземпляра системного объекта jQuery из: jquery.min.js или структуры JSON из: json2-1.0.min.js

Пол Миллесон
источник
1

Я изменил .json на .txt, и запрос работает нормально. Я не уверен, к каким последствиям может привести .txt.

Панкадж
источник
1

Если вы используете ASP.NET Core, просто вставьте файл, wwwrootно если вы используете ASP.NETфреймворк, это позволяет расширение JSON из web.config следующим образом:

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

а также

<location path="Content">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
Моаз Салем
источник