如何使用ASP.NET允许下载.json文件


125

如何启用从旧的ASP.NET网站(我相信是IIS6)下载* .json文件?

我正在获取404页面而不是JSON文件。

我需要创建一个web.config文件吗?里面有什么?


1
您可能需要为其添加MIME类型
vcsjones

1
用于JavaScript还是保存在HD上?
雷米

我想通过jQuery.ajax(URL来访问它:...
LEA海耶斯

2
补充说,在本地IIS具有列表之后,在您下一次部署时,它可能会从重复的列表中引发500服务器错误,因此请注释掉。
汤姆·马拉德

Answers:


118

将JSON MIME类型添加到IIS6。按照MSDN的“配置MIME类型(IIS 6.0)”中的说明进行操作

  • 扩展名:.json
  • MIME类型:application / json

更改后不要忘记重新启动IIS。

更新:在IIS7和更高版本上有简单的方法可以做到这一点。该操作员特别要求IIS6帮助,因此我将原样保留此答案。但是,即使IIS6现在已经很老了,这个答案仍然会带来很多流量。希望您使用的是较新的产品,所以我想提一下,如果您具有较新的IIS7或较新的版本,请参见下面的@ProVega答案,以获取较新版本的更简单解决方案。


1
干杯,但这是在共享的主机软件包上,无法访问除web.config或全局代码文件以外的任何文件
Lea Hayes

如果您无权访问IIS 6.0设置,并且提供程序的支持不会为您添加MIME类型,则必须将提供程序切换到该提供程序上的IIS 7.0或较新的服务器,如果它们提供此功能,支持这一点。
乔恩·亚当斯

1
是的,ASP.Net可以通过ASPX处理程序甚至是简单的页面传递文件,但是您将无法在URL中使用.json文件类型,因为它不会将该请求传递给ASP.Net。运行。它必须是通过ASPX运行时传递的东西。如果您无权访问IIS设置,则它必须是的现有扩展程序之一.ASPX。同样,使用IIS7切换到服务器可以提供更多,更轻松的解决方案。
乔恩·亚当斯

1
重新启动应用程序池就足够了(以我为例),而不是完全重新启动IIS。
kltft

1
@kltft是的,确实,apppool重新启动将触发更新,但仅适用于该池。这些步骤包括更改每个人的设置,并使它们处于不一致的设置级别中,很容易在以后引起混乱。为了安全起见,我建议重新启动整个iis过程。但是在紧要关头,如果每个人都同意优点/缺点,则可以重新启动apppool。
乔恩·亚当斯

211

如果要手动向站点添加支持,则只需在system.webServer部分的web.config中添加以下内容:

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

这将在IIS下添加“本地”配置。这在IIS6中无效,但在IIS7及更高版本中有效。


6
更新了您的答案以包括完整web.config路径。
GFoley83


1
由于某种原因,这弄乱了我的整个网站-CSS不再起作用!
TheJeff 2015年

@TheJeff-这发生在我身上,但这是因为我添加了两个staticContent mimeMap,一个用于JSON(必需),一个用于CSV(冗余,我认为这是必需的,但是IISExpress applicationConfig已经具有CSV)。因此,在尝试访问任何静态文件时,都会出现此错误:Cannot add duplicate collection entry of type 'mimeMap' with unique key attribute 'fileExtension' set to '.csv' 一旦删除了重复项,就没有问题了。
红豌豆

1
这将在本地运行时解决问题,但在现场直播时要注意。如果mimeMap已在IIS中全局配置,则将出现500个错误。在这种情况下,只需从web.config中删除此部分。
伊万

20

解决方案是您需要在MIME类型中添加json文件扩展名类型

方法1

转到IIS,选择您的应用程序并查找MIME类型

在此处输入图片说明

单击从右侧面板添加

文件扩展名= .json

MIME类型= application / json

在此处输入图片说明

MIME类型中添加.json文件类型后,重新启动IIS并尝试访问json文件


方法2

转到该应用程序的web.config并在其中添加此行

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

15

添加对mimetype的支持(如@ProVega所建议)时,最好的做法是在添加该类型之前先删除该类型-这是为了防止在部署到已经支持该类型的服务器时出现意外错误,例如:

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

当您仅添加mimeMap时,有时会删除您的css样式,因此,正确的方法是先删除它,非常感谢
sgrysoft

IIS7 C:\Windows\System32\inetsrv\config文件中配置文件的路径:applicationHost.config
OO

5

刚遇到这个问题,但必须找到IIS Express的配置,这样我才能添加mime类型。对我来说,它位于,C:\Users\<username>\Documents\IISExpress\config\applicationhost.config我可以在那里添加正确的“哑剧贴图”。


这可能就是为什么它无法通过IIS Express对我有效的原因。不幸的是,这不是我想要在每台开发机上进行配置的东西,因此看起来我建议对json配置文件坚持使用.js扩展名。
jpierson 2014年

您也可以在Web.Config中执行此操作-查看此答案stackoverflow.com/a/19517275/643761
Simcha Khabinsky 2014年

@SimchaKhabinsky对我来说,web.config是不够的。
Jean-Bernard Pellerin

3
如果web.config还不够,则可能需要在以下<mimeMap>节点之前添加此行:<remove fileExtension=".json" />。您不必触摸applicationhost.config(或machine.config)。话虽如此,如果您经常创建新站点并且不想为每个站点修改web.config,那么修改这些文件可能会很有用。这可能适用于开发环境,但通常在生产环境中您无法触摸machine.config,因此我仍然建议您在web.config中进行更改。
gilly3 2015年

1
感谢@ gilly3-这remove是我的关键
harriyott 2015年

0
  1. 导航到C:\ Users \ username \ Documents \ IISExpress \ config
  2. 使用Visual Studio或您喜欢的文本编辑器打开applicationhost.config。
  3. 搜索单词mimeMap,您应该找到很多'em。
  4. 将以下行添加到列表顶部:。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.