Adrian Godong Asked: 2009-07-14 08:59:52 +0800 CST2009-07-14 08:59:52 +0800 CST 2009-07-14 08:59:52 +0800 CST IIS 无法提供某些文件扩展名 772 我正在提供 .JSON 文件,但即使该文件存在,当访问任何文件时,IIS 也会不断抛出 404 错误。我尝试将其中一个文件重命名为 .JS,它可以工作。 任何指针什么设置会导致这个问题? windows-server-2003 iis http-status-code-404 6 个回答 Voted Evan Anderson 2009-07-14T09:09:26+08:002009-07-14T09:09:26+08:00 默认情况下,W2K3 及更高版本中的 IIS 不会提供不是它知道的 MIME 类型的文件(而是返回 404 错误)。 您需要将 MIME 类型添加到 IIS 以允许它为该类型的文件提供服务。您可以在站点级别或服务器级别进行设置。 为整个服务器设置这个: 在 IIS 管理器中打开服务器的属性,然后单击 MIME 类型 点击“新建”。为扩展名输入“JSON”,为 MIME 类型输入“application/json”。 Eric Falsken 2010-02-02T12:22:54+08:002010-02-02T12:22:54+08:00 我有同样的问题。IIS 执行称为 MIME 类型过滤的操作。如果它不知道特定文件扩展名的 MIME 类型,则返回 404 错误。 在 IIS <7 上: 打开站点(或服务器)属性。单击HTTP 标头选项卡。单击MIME 类型按钮。使用 MIME 类型“application/octet-stream”添加文件类型 *。 对于 IIS 7: 打开 IIS 管理器。单击服务器或网站。双击MIME 类型功能图标。在“操作”窗格中,单击“添加” 。用 * 填充“文件扩展名”框,用“application/octet-stream”填充 MIME 类型框。 neildeadman 2013-04-09T06:47:14+08:002013-04-09T06:47:14+08:00 我在 IIS 中的站点中添加了 MIME 类型.json,text/json以便在浏览器中以文本形式查看。 TristanK 2011-11-16T02:11:26+08:002011-11-16T02:11:26+08:00 要将答案合并为一个更一般的答案: IIS 不会提供没有与之关联的 MIME 类型的文件 请参阅:IIS 6.0 将不提供未知的 MIME 类型 并且:在 IIS 7 中配置 MIME 类型 警告来了: 除非脚本处理程序(活动内容引擎,例如 ASP/ASPX/PHP/Java/ISAPI/等)与它们相关联 这意味着 IIS 将它们视为活动内容,而不是静态文件 任何扩展提供的活动内容文件必须在 Web 服务扩展限制列表中允许该扩展(在 IIS 7 中也称为 ISAPI/CGI 限制) 如果您在 IIS 7 中的活动内容类型上收到 404,这也可能意味着您的处理程序未安装 - 因此您需要实际安装支持该文件扩展名的组件(例如,如果 .aspx 文件生成404,你可能没有安装 ASP.Net) 如果您遇到此类问题,请打开网站的网络日志文件,并查看子状态代码(即 404 3)以确定您的网站不为 IIS 6 提供内容的确切原因,或者 使用失败的请求跟踪 (或者只是本地控制台上的详细错误) 在 IIS 7 中。 bgmCoder 2014-03-09T07:41:24+08:002014-03-09T07:41:24+08:00 我也有这个问题 - 问题原来是存储 json 文件的文件夹的文件权限。我在这里回答了一个类似的问题。 这些人说您需要添加 MIME 类型都是正确的。 MIME 类型在服务器上启用文件扩展名,并且映射处理程序告诉 IIS 如何处理它。 因此,您还必须添加 Mapping Handler,为此您必须安装名为 Classic Asp的 Windows 功能才能处理映射。 以下是添加映射处理程序的方法: 打开 IIS7 管理器 转到 IIS 服务器的属性(或者只是站点,如果您不想要全局设置) 点击Handler Mappings 点击Add a Script Map 输入属性: 请求路径:*.json 可执行文件:C:\WINDOWS\system32\inetsrv\asp.dll 名称:(JSON你可以随意称呼它) 单击确定,您就完成了。它应该开始工作,您不需要重置 IIS。 此外,有些人会告诉你使用 `application/x-javascript' 作为 mime 类型的应用程序,但 JSON本身不是 javascript (但它是一个子集),所以它应该是 'application/json' ,因为它是 IANA 注册的 JSON 媒体类型。 Glen Little 2020-04-05T11:40:36+08:002020-04-05T11:40:36+08:00 还要检查 IIS 中的请求过滤。如果“.json”在那里并且被阻止,那么其他任何事情都不会起作用。
默认情况下,W2K3 及更高版本中的 IIS 不会提供不是它知道的 MIME 类型的文件(而是返回 404 错误)。
您需要将 MIME 类型添加到 IIS 以允许它为该类型的文件提供服务。您可以在站点级别或服务器级别进行设置。
为整个服务器设置这个:
我有同样的问题。IIS 执行称为 MIME 类型过滤的操作。如果它不知道特定文件扩展名的 MIME 类型,则返回 404 错误。
在 IIS <7 上: 打开站点(或服务器)属性。单击HTTP 标头选项卡。单击MIME 类型按钮。使用 MIME 类型“application/octet-stream”添加文件类型 *。
对于 IIS 7: 打开 IIS 管理器。单击服务器或网站。双击MIME 类型功能图标。在“操作”窗格中,单击“添加” 。用 * 填充“文件扩展名”框,用“application/octet-stream”填充 MIME 类型框。
我在 IIS 中的站点中添加了 MIME 类型
.json
,text/json
以便在浏览器中以文本形式查看。要将答案合并为一个更一般的答案:
警告来了:
如果您遇到此类问题,请打开网站的网络日志文件,并查看子状态代码(即 404 3)以确定您的网站不为 IIS 6 提供内容的确切原因,或者
在 IIS 7 中。
我也有这个问题 - 问题原来是存储 json 文件的文件夹的文件权限。我在这里回答了一个类似的问题。
这些人说您需要添加 MIME 类型都是正确的。
MIME 类型在服务器上启用文件扩展名,并且映射处理程序告诉 IIS 如何处理它。
因此,您还必须添加 Mapping Handler,为此您必须安装名为 Classic Asp的 Windows 功能才能处理映射。
以下是添加映射处理程序的方法:
Handler Mappings
Add a Script Map
*.json
C:\WINDOWS\system32\inetsrv\asp.dll
JSON
你可以随意称呼它)此外,有些人会告诉你使用 `application/x-javascript' 作为 mime 类型的应用程序,但 JSON本身不是 javascript (但它是一个子集),所以它应该是 'application/json' ,因为它是 IANA 注册的 JSON 媒体类型。
还要检查 IIS 中的请求过滤。如果“.json”在那里并且被阻止,那么其他任何事情都不会起作用。