最近,我设置的通过 IIS6 的 Web 服务器下载的一堆文件停止工作了。它们是一些以“.exe”结尾的安装文件,几个月前还可以正常工作。我已正确设置文件权限,甚至在 IIS 中启用了浏览功能,以确定路径确实正确。我不确定这是否相关,但带有句点的目录也停止工作了。例如:“~/download/ApplicationName/0.9/AppName-setup-0.9.123b2.exe”
当我将目录重命名为 0_9 时,浏览功能可以正常工作,但文件本身会从 IIS 发出 404 消息。目前,我已经设置了 FileZilla FTP 以匿名访问这些文件,但更愿意继续使用 IIS。我考虑过创建一个 HTTP 处理程序来为 .exe 文件提供服务,但实际上我更希望使用配置解决方案。我就是搞不清楚为什么它不起作用,因为所有设置都是正确的。目录设置为读取访问。“每个人”对文件本身都有读取权限,并且目录浏览(除了文件夹“0.9”重命名为“0_9”)会显示文件。
- 编辑 -
我应该指出,我最近使用 WebPI 更新了 PHP(首先卸载了旧 PHP),并添加了 ASP.Net 4 支持。它可能删除了 .exe 映射,最近才有用户通知我这个问题,我自己也重复了一遍。我稍后可以登录服务器时会检查映射(不能在工作中登录)。
答案1
IIS 不会提供没有 MIME 类型映射的扩展名的文件 - 请参阅http://support.microsoft.com/kb/326965了解详细信息,包括如何编辑映射。
您是否更改/安装了任何可能从 IIS 中删除 .exe 文件的 MIME 映射的内容?
此外,某些代理和安全插件可能会阻止 .exe 文件 - 您最近是否添加或重新配置了类似的东西?
答案2
您最近是否安装了与 IIS 配合使用的任何程序?例如,我相信 UrlScan 默认阻止访问 .exe 文件。
答案3
我意识到这个答案已经晚了两年,但我还是补充一下,以防其他人通过谷歌找到这个问题——就像我刚才做的那样。
另一个可能的原因可能是“保护”软件阻止了下载。我刚刚调查了为什么 .exe 文件无法从我们的一个客户的服务器上下载,最终发现网址扫描已安装。
我不知道 .exe 文件是否通过 UrlScan 配置默认被阻止,或者是否由我们的客户端添加(在我们参与之前它已经在服务器上存在很长时间了),但可以理解的是,客户端不愿意允许 .exe 文件通过,因为在同一台服务器上托管了其他网站。
我们唯一的选择是将有问题的 .exe 文件托管在我们的服务器上并链接到那里。这显然不是理想的选择,因为网站用户正在从他们当前所在的域以外的其他域下载文件 - 而且该域的名称对他们来说没有任何意义。
编辑- 我刚刚重读了 David 给出的答案,他提到了以下内容(这使得我的回答毫无意义)...
此外,某些代理和安全插件可能会阻止 .exe 文件