【问题标题】:Why is my json file not found?为什么找不到我的 json 文件?
【发布时间】:2013-07-11 16:42:45
【问题描述】:

我的 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>

【问题讨论】:

  • 暂时先别管代码,看看能不能在浏览器中找到文件开始
  • 出于这个原因,我已经注释掉了显示的行之后的所有代码。 IOW,函数为空。
  • 您是否设法在浏览器中显示 json?即直接将 URL 放入地址栏中?
  • @greg:它“咬紧”了什么?
  • 更新 4 为我解决了!谢谢\o/

标签: jquery asp.net json google-chrome-devtools


【解决方案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>

【讨论】:

  • 是的(现在我有)。这: $.getJSON('/Content/NBCCJr.json', function (data) { 给出相同的响应。
  • 是404响应吗?您是否尝试过直接在浏览器中导航到文件? Content 文件夹是否位于 Web 项目的根目录中?
  • 是的,帖子是这么说的。请看我的更新。是的,Content 是一级文件夹,如原帖所示。
  • 看看this post
  • 如果你添加指定的 web.config mime 类型就可以了:)
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

    解决方法是你需要在 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>
    

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        如果您使用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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-31
          • 1970-01-01
          • 2018-02-14
          • 2018-02-17
          • 2017-10-23
          • 1970-01-01
          • 2016-12-15
          • 2020-10-01
          相关资源
          最近更新 更多