如何在Web.Config中禁用目录浏览

时间:2011-04-05 08:49:52

标签: asp.net iis web-config

我有一个网站,我喜欢 web.config文件中的拒绝目录浏览器

这里我使用的代码放在ROOT中。 不行。我正在本地测试它,所以使用URL LIKE http://localhost:3214/我仍然可以浏览CMS的目录。

  • 我做错了什么?
  • 它是否应该在Local Machine上工作?

感谢您的支持!

<configuration>
  <location path="Cms">
    <system.webServer>
      <directoryBrowse enabled="false" />
    </system.webServer>
  </location>
</configuration>

一些资源:

http://blogs.iis.net/bills/archive/2008/03/24/how-to-enable-directory-browsing-with-iis7-web-config.aspx

http://www.expta.com/2008/03/configuring-virtual-directories-with.html

4 个答案:

答案 0 :(得分:7)

首先:并非所有内容都在<location>块中运行。

我找不到<system.webServer>中不支持<location>的肯定声明,但我找不到任何建议允许它的情况。这方面的证据是(全局)machine.config,其中system.webserver部分被定义为使用IgnoreSection处理程序:ie。它不是由标准System.Configuration实现处理的,而是配置处理的标准实现,它为<location>提供支持。

尝试使用web.config元素将Cms添加到directoryBrowse文件夹中,以确认浏览已被阻止。

答案 1 :(得分:5)

Gibbok,这里没有错,不要惊慌:)

假设您正在从Visual Studio内置的服务器浏览您的网站,这通常是正常情况。

我很确定如果您使用上述代码移至IIS,则目录浏览的行为将与您希望的一样。

尝试在IIS中托管此网站,让我们知道发生了什么,谢谢。

答案 2 :(得分:0)

&lt; directoryBrowse&gt;指令仅通过http协议控制目录的列表: http://msdn.microsoft.com/en-us/library/ms691327%28v=vs.90%29.aspx

它不会对代码产生任何影响,试图从任何其他(甚至您自己的)应用程序中访问该目录。

@Edit:在编辑之后,如果我说得对 - 我认为,拒绝目录浏览器的意思是预期的功能:使用以下方式显示指定路径中dir的内容浏览器。是的,它可能无法在本地开发服务器上运行。试试IIs吧!

答案 3 :(得分:0)

我正在尝试相同的代码。你所拥有的其实是正确的。这是reference

当然,它不适合我,我无法弄清楚为什么,直到我阅读Richard的帖子并记得有人在该目录中放置了一个web.config文件。该文件将覆盖主web.config文件中的行为。在子目录web.config中,显式启用了directoryBrowse选项(以及许多其他处理程序,yikes!)。删除该文件以及上面的内容对我有用。它实际上将请求传递给下一个处理程序,这正是我想要的。

我在本地计算机上使用IIS 7.