如何阻止 IIS 提供某种类型的文件服务?

如何阻止 IIS 提供某种类型的文件服务?

我不想从 MIME 列表中删除条目,我只是想告诉 IIS 停止提供具有特定扩展名的文件。

为什么让 IIS 做一些简单的事情(比如停止提供具有特定扩展名的文件)如此困难?

我见过类似的解决方案...添加指向某个 404.dll 的映射,该映射仅存在于某个单独的锁定工具包中,该工具包声称已在 IIS 6.0+ 中过时。我还读到,可以通过创建到 asp.net 处理程序 dll 的映射,然后在 web.config 中为文件类型指定 System.Web.HttpForbiddenHandler,让 ASP.NET 明确禁止提供文件。这些方法有效,尽管起初由于浏览器缓存,禁止处理程序似乎不起作用,哈哈:(请参阅 http://stackoverflow.com/questions/208571/castleproject-vm-httpforbiddenhandler-not-work 上的答案)。

我只是在这里寻找一个简单的解决方案。

答案1

我不会因为其他用户对问题的解释不清而放弃使用这种System.Web.HttpForbiddenHandler方法。我怀疑他的问题中可能还有其他问题没有得到充分解释。

关于映射.fla到 ASP.NET ISAPI 扩展并使用System.Web.HttpForbiddenHandler,这非常有效,我们从未遇到过“缓存”问题。您是否真的尝试过这种方法,而不是听信传言?

您的另一种方法是删除相关的 mime 类型(无论是全局删除还是在站点级别删除)。

“为什么让 IIS 做一些简单的事情(比如停止提供具有特定扩展名的文件)如此困难?”

听起来并不厚颜无耻,以上任何一点都不难,事情就是这样做的,而且实施起来也不费太多工作。

答案2

简单的解决方案

  1. 不要将文件放在你的网络可访问目录中
  2. 将它们放在那里,并使用尚未提供的扩展名 - 我经常这样做 - 我将 .config 添加到我不想提供的文件中 - 这样我就不必更改 IIS。

答案3

在 IIS 7 中,这更容易,因为您只需修改 web.config 即可禁止任何文件类型。在 IIS 6 中,只有注册为由 ASP.NET ISAPI 筛选器处理的文件类型才会受到 web.config 设置的影响。

相关内容