为啥找不到我的 json 文件?

Posted

技术标签:

【中文标题】为啥找不到我的 json 文件?【英文标题】: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/ 【参考方案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>

【讨论】:

以上是关于为啥找不到我的 json 文件?的主要内容,如果未能解决你的问题,请参考以下文章

我在找不到 Swift4 时加载 json 数据时遇到问题,为啥?

为啥找不到我的芹菜配置文件?

Godot,为啥我的 android 导出找不到/打开文件?

为啥我的 App 找不到我的 plist 文件?

为啥 Perl 在 ClearCase 中找不到我的文件?

为啥 GitLab Ci 找不到我的缓存文件夹?