我的第一个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
这应该行得通。