【发布时间】:2012-09-04 21:57:19
【问题描述】:
我的第一个 Azure 网站是一个简单的测试网站,我已经有一段时间了,它可以让 ajax 回调服务器以获取 JSON 数据。所有数据文件都有 .json 扩展名。 Azure 不会“看到”这些文件。如果我将扩展名更改为 .txt,它会为它们提供服务。
我是否必须使用 IIS 才能看到这个 .json?
【问题讨论】:
我的第一个 Azure 网站是一个简单的测试网站,我已经有一段时间了,它可以让 ajax 回调服务器以获取 JSON 数据。所有数据文件都有 .json 扩展名。 Azure 不会“看到”这些文件。如果我将扩展名更改为 .txt,它会为它们提供服务。
我是否必须使用 IIS 才能看到这个 .json?
【问题讨论】:
我也发现 Ahmed Sabbour 的博文很有帮助,但它给我带来了额外的问题。虽然修复适用于 Azure Web 应用程序,但当我尝试在本地运行该应用程序时,它可怕地死了,到处抛出 HTTP 500.19。我花了一段时间才弄清楚如何在维护单个 web.config 的同时解决这个问题。解决方案是(虽然有点软糖)先删除 fileExtension,然后将其重新添加:
<staticContent>
<remove fileExtension=".json" />
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
出于我狭隘的目的,这很好,我希望这可以节省一些时间来解决这个问题。
【讨论】:
在他的博客文章http://blogs.msdn.com/b/africaapps/archive/2013/06/07/how-to-serve-static-json-files-from-a-windows-azure-website.aspx 中引用 Ahmed Sabbour,您必须执行以下操作:
"如果您将 .json 文件上传到您的 Windows Azure 网站并尝试访问它,它会给您一个 404 File Not Found 错误,因为默认情况下未设置 .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 消失了。
【讨论】:
Azure(至少是云服务)似乎知道如何从已部署的 ASP.NET MVC 项目中提供 JSON。我的问题是 JSON 文件属性页上的 Build Action 设置不正确。将 Build Action 更改为 Content 为我修复了它。
【讨论】:
您是否尝试将特定的 MIME 类型添加到服务器的配置文件中?
http://www.iis.net/configreference/system.webserver/staticcontent/mimemap
如果您将 mime 类型添加为
application/json; charset=utf
应该可以的。
【讨论】: