我有一个网站,我喜欢 web.config文件中的拒绝目录浏览器。
这里我使用的代码放在ROOT中。 不行。我正在本地测试它,所以使用URL LIKE http://localhost:3214/我仍然可以浏览CMS的目录。
感谢您的支持!
<configuration>
<location path="Cms">
<system.webServer>
<directoryBrowse enabled="false" />
</system.webServer>
</location>
</configuration>
一些资源:
http://www.expta.com/2008/03/configuring-virtual-directories-with.html
答案 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.