好的,我们有一个 Web 服务器,它为大量网站提供服务。我们的许多网站都可以提供 zip 文件,没有任何问题。
然而,在一个网站上,它拒绝提供这些文件。文件名较长(虽然不是真的太长了(难以想象)... 例如:01-EXPORT-20120403.121040.zip
。我想也许它的长度或文件名格式有问题,所以我尝试将其中一个更改为zip.zip
... 但仍然无法提供。
在 IE 中,您会看到错误页面:Internet Explorer无法显示该网页
在 FF 中,您会看到错误页面:与服务器的连接已重置
我想看看它是否是特定的 zip 文件,因此我将一个虚拟hello.txt
文件放在目录中并尝试浏览该文件并且它运行良好,将扩展名更改为.zip
,然后出现相同的错误,因此它似乎是特定于 zip 文件的。
我确保该站点上 zip 文件的 mime 类型设置与成功提供 zip 文件的站点完全一样:
我检查了 IIS 服务器日志,看到了请求文件的条目,并且记录的服务器状态代码为 200(成功),所以这对我没有任何帮助。
我将文件上的所有失败审核设置为 ON,认为这可能是权限问题,浏览后发现错误,然后检查服务器上的安全日志,但没有失败审核。
我在 FF 中启动了 Firebug,它显示了以下内容:
但我无论如何也想不出服务器为何要中止该文件。
有什么想法或在哪里可以找到更多信息以尝试让它提供这些文件?
我已尝试在机器上重新启动 IIS,但实际上尚未重新启动机器。
IIS/Windows 版本是 Windows Server 2003 R2。
澄清:这实际上是在网站下的一个子目录应用程序上。然而,另一个子目录应用程序在同一网站下提供 zip 文件(以及其他实际站点在同一台服务器上)。 两个应用程序(工作和非工作)都在 ASP.NET 4.0 上运行。
我也认为文件可能太大了,但是我看了一下文件大小,它们只有 2KB,所以我怀疑这是问题所在。
更新:我做了一些测试,它在“经典” ASP 网站上工作正常,所以我想也许它只适用于 ASP.NET 网站。在 .NET 3.5 网站上试过,它工作正常,所以我想也许它只适用于 .NET 4.0 网站。在另一个 .NET 4.0 网站上试过,它工作正常,所以它显然不是与.NET 或 .NET 版本相关。
答案1
好吧,我似乎已经搞清楚了。这实际上是 MIME 类型映射……我必须消除。
我已将其添加到站点,因为站点下的一个应用程序目录使用 HttpHandler 来响应 zip 文件并根据参数压缩文件。为此,它需要将 .zip 文件映射到 ASP.NET 进程。
但是对于直接 zip 文件下载,它不知道如何处理它们,因此我从站点中删除了 mime 类型,并将其添加到应用程序目录的属性中,现在一切正常。
答案2
我记不清具体在哪里,但 IIS 确实有一个“允许”文件类型的机制。它可以是全局的,也可以是特定于站点的,并且您必须进行调整才能允许它为具有特定扩展名的文件提供服务。