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

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

<projectName>
    \Content
        NBCCJr.json

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

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

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

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

UPDATE

Я также попробовал его с "ударами" назад:

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

... и получил тот же результат ( "Не удалось загрузить ресурс: сервер ответил статусом 404 (Not Found)" )

ОБНОВЛЕНИЕ 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 - не найдено Запрошенная вами страница не может быть выполнена из-за конфигурации расширения. Если страница script, добавьте обработчик. Если файл нужно загрузить, добавьте MIME-карту.

ОБНОВЛЕНИЕ 4

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

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

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

Ответ 1

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

Как в:

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

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

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

Ответ 2

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

Способ 1

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

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

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

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

MIME Type = application/json

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

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


Способ 2

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

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

Ответ 3

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

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

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

Ответ 4

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