IIS 不支持某些文件扩展名

IIS 不支持某些文件扩展名

我在 Win 2k3 服务器和 IIS 上遇到了这个奇怪的问题:

Iis 有多个站点,我需要在其中一个站点中创建一个子目录并将其设置为 Web 应用程序。我注意到,如果我创建新目录并将一些 .js/.txt 文件放入其中,则它们将不会由 iis 提供服务(IE 给出错误 Internet Explorer 无法显示网页)。

如果我将相同的文件放在另一个旧站点的子目录中,它将正确显示。

通过嗅探流量,我发现 iis 回复连接状态 200,然后完全断开任何连接

http://domain.com/test2/prova.txt

GET /test2/prova.txt HTTP/1.1
Host: domain.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 200 OK

例如,如果我重命名 prova.asp 中的 prova.txt 文件,则显示没有问题,因此不应该是权限问题。

经过一番研究,我发现这可能是由于缺少 mime 类型造成的,我检查了 .txt 和 .js 是否存在并由 aspnet_isapi.dll 提供服务。还有一件奇怪的事情:如果我从目录的属性中删除 mime 映射,它可以正确提供服务,但同样的事情对 js 不起作用。

我真的开始没有主意了,有谁能给我一些提示吗?

提前致谢。

答案1

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

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

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

如果您正在创建 .NET 应用程序,也可以在 web.config 文件中执行相同的操作。

答案2

由于您已将这些扩展映射到 aspnet_isapi.dll,因此现在需要告诉 ASP.NET 处理它们。您正确地完成了 IIS 部分。

这是您需要在 httpHandlers 中设置的 PageHandlerFactory。我发现这个页面对此进行了深入介绍:http://aspnet.4guysfromrolla.com/articles/011404-1.aspx

相关内容