86

我的 asp.net 项目的 Content 文件夹中有一个 json 文件:

<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

我收到了来自 Vint Cerf、Tim Berners-Lee 和/或 Al Gore 的信息丰富的 WSOD 消息:

HTTP 错误 404.3 - 未找到 由于扩展配置,无法提供您请求的页面。如果页面是脚本,则添加处理程序。如果应该下载文件,请添加 MIME 映射。

更新 4

多亏了 JAM,它现在可以工作了。

我必须将此添加到 Web.Config:

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

5 回答 5

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>
于 2013-07-13T14:23:55.613 回答
22

解决方案是您需要在 MIME Types 中添加 json 文件扩展名类型

方法一

转到 IIS,选择您的应用程序并查找 MIME 类型

在此处输入图像描述

单击从右侧面板添加

文件扩展名 = .json

MIME 类型 = 应用程序/json

在此处输入图像描述

在MIME Types中添加.json文件类型后,重新启动 IIS并尝试访问 json 文件


方法二

转到该应用程序的 web.config 并在其中添加此行

 <system.webServer>
   <staticContent>
     <mimeMap fileExtension=".json" mimeType="application/json" />
   </staticContent>
 </system.webServer>
于 2016-02-15T09:04:49.027 回答
2

尝试将 *.json 文件放在 webRoot 中,而不是放在子文件夹中。然后像这样引用它:

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

这当然需要先前包含和实例化来自:jquery.min.js 的 jQuery 系统对象或来自:json2-1.0.min.jsJSON 结构

于 2014-11-19T05:05:40.003 回答
1

如果您使用ASP.NET Core,只需将文件放入,wwwroot但如果您使用ASP.NET框架,则允许来自 web.config 的 JSON 扩展,如下所示:

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

<location path="Content">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
于 2019-11-02T23:09:58.497 回答
1

我将 .json 更改为 .txt 并且请求工作正常。我不确定 .txt 可能导致的后果。

于 2016-11-03T02:43:03.630 回答