IIS无法提供某些文件扩展名


Answers:


21

默认情况下,W2K3及更高版本中的IIS将不提供它不知道的MIME类型的文件(而是返回404错误)。

您需要向IIS添加MIME类型,以允许它提供该类型的文件。您可以在站点级别或服务器级别进行设置。

要为整个服务器设置此设置:

  • 在IIS管理器中打开服务器的属性,然后单击MIME类型。
  • 点击“新建”。输入“ JSON”作为扩展名,输入“ application / json”作为MIME类型。

我添加了一个新的MIME类型,重新启动了网站,但仍然是404。无论如何,谢谢,我认为这可能是问题之一。
阿德里安·高东

嗯 仔细检查您所做的更改。“重命名文件并成功”的症状是这种行为的经典指示。
埃文·安德森

三重检查它。我假设您不需要重新启动整个服务器,对吗?
阿德里安·高东

嗯...那我在努力告诉你该怎么做。我只是在Windows Server 2003 SP2的干净VM中亲自完成此操作。我安装了IIS,在“ C:\ inetpub \ wwwroot”中创建了一个“ foo.json”文件,并验证了在浏览器中单击“ localhost / foo.json ” 时是否得到了404 ,并为“ .JSON”添加了MIME类型。 “ /” application / json“到站点,然后转到我仍然打开的IE窗口,然后按F5键并看到页面加载。我想您还有其他的玩法。
埃文·安德森

1
我还需要确保启用了Web服务扩展才能为我完成这项工作……
gandalf

3

我有同样的问题。IIS执行称为MIME类型筛选的操作。如果它不知道特定文件扩展名的MIME类型,则返回404错误。

在IIS <7上: 打开站点(或服务器)属性。单击“ HTTP头”选项卡。单击“ MIME类型”按钮。添加文件类型*和MIME类型“ application / octet-stream”。

对于IIS 7: 打开IIS管理器。单击服务器或网站。双击“ MIME类型”功能图标。在“操作”窗格中,单击“ 添加”。用*填充“文件扩展名”框,并用“ application / octet-stream”填充MIME类型框。



1

要将答案合并为一个更通用的答案:

警告:

  • 除非脚本处理程序(活动内容引擎,例如ASP / ASPX / PHP / Java / ISAPI / etc)与它们关联
    • 这意味着IIS将它们视为活动内容,而不是静态文件
  • 任何扩展服务的活动内容文件必须在Web服务扩展限制列表中允许该扩展(IIS 7中又称为ISAPI / CGI限制)
    • 如果您在IIS 7中获取有关活动内容类型的404信息,则可能还意味着未安装处理程序-因此,您实际上需要安装支持该文件扩展名的组件(例如,如果.aspx文件生成一个404,您可能没有安装ASP.Net)

如果遇到此类问题,请打开网站的Web日志文件,然后查看子状态代码(即404 3),以确定您的网站为什么不为IIS 6提供内容,或者

  • 使用失败的请求跟踪
  • (或只是本地控制台上的详细错误)

在IIS 7中


这个“ caveat”没有意义:“ ...这意味着IIS将它们视为活动内容,而不是静态文件” Web.config将json文件声明为静态:<staticContent> <mimeMap fileExtension =“。json” mimeType = “ application / json” /> </ staticContent>

“除非脚本处理程序与IIS相关联,否则IIS将不会提供没有与MIME类型相关联的静态文件”仍然可以作为(IMO)真正的声明。如果某人无法为他们提供服务,听起来他们的配置文件中的任何地方都没有此定义。也许您的Windows副本比其Windows版本更新?
TristanK

1

我也有这个问题-问题原来是存储json文件的文件夹的文件权限。我在这里回答了类似的问题

这些人都正确地说您需要添加MIME类型。

MIME类型在服务器上启用文件扩展名,并且“映射处理程序”告诉IIS如何处理它。

因此,您还必须添加Mapping Handler,为此,必须安装称为Classic Asp的Windows功能才能处理映射。

以下是添加映射处理程序的方法:

  1. 打开IIS7管理器
  2. 转到IIS服务器的属性(如果您不想使用全局设置,则仅访问站点)
  3. 点击 Handler Mappings
  4. 点击 Add a Script Map
  5. 输入属性:
    • 请求路径: *.json
    • 可执行文件: C:\WINDOWS\system32\inetsrv\asp.dll
    • 名称:(JSON您可以随意命名)
  6. 单击确定,完成。它应该开始工作,并且您不需要IIS重置。

另外,有些人会告诉您使用“ application / x-javascript”作为mime类型的应用程序,但是JSON 本身不是javascript (但是,它一个子集),因此应该是“ application / json” ,因为它是IANA注册的JSON媒体类型。


0

还要检查IIS中的“请求筛选”。如果“ .json”存在并被阻止,则其他任何方法均无效。

在此处输入图片说明

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.