加载.json文件会产生404个错误



我的第一个Azure网站是一个简单的测试站点,我已经使用了一段时间,它可以为JSON数据对服务器进行ajax调用。所有的数据文件都有.json扩展名。Azure不会"看到"这些文件。如果我将扩展名更改为.txt,它会很好地为它们提供服务。

我必须破坏IIS才能看到这个.json吗?

引用Ahmed Sabbour的博客文章http://blogs.msdn.com/b/africaapps/archive/2013/06/07/how-to-serve-static-json-files-from-a-windows-azure-website.aspx您必须执行以下操作:

"如果你将.json文件上传到你的Windows Azure网站并尝试访问它,它会给你一个404文件找不到错误,因为默认情况下没有设置.json的MIME类型。这通常也适用于任何可能需要特定MIME类型的文件。

若要解决此问题,请将FTP传输到您的网站,并上载以下Web.config文件,该文件将设置正确的MIME类型。如果已经有Web.config文件,只需将以下内容添加到相应的部分即可。

<?xml version="1.0"?>
<configuration>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension=".json" mimeType="application/json" />
     </staticContent>
    </system.webServer>
</configuration> 

".我这样做了,404就不见了。

我也觉得Ahmed Sabbour的博客文章很有帮助,但它给我带来了一个额外的问题。虽然这个修复程序对Azure Web应用程序有效,但当我尝试在本地运行该应用程序时,它死得很惨,到处都是HTTP 500.19。我花了一段时间才弄清楚如何在维护单个web.config的同时解决这个问题。解决方案是(尽管有点复杂)先删除fileExtension,然后将其添加回:

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

出于我狭隘的目的,这很好,我希望这能节省一些时间来解决这个问题。

Azure(至少是云服务)似乎知道如何从部署的ASP.NET MVC项目中提供JSON。在我的案例中,问题是JSON文件的属性页上的Build Action设置不正确。将构建操作更改为内容为我修复了它。

您是否尝试将特定的MIME类型添加到服务器的配置文件中?

http://www.iis.net/configreference/system.webserver/staticcontent/mimemap

如果将mime类型添加为application/json; charset=utf这应该行得通。

最新更新