2011-04-05 100 views
19

我有一個網站,我會像拒絕目錄瀏覽器web.config文件如何禁用在Web.Config中的目錄瀏覽

這裏我使用的代碼放置在ROOT中。 不起作用。我在本地測試它,因此使用URL LIKE http://localhost:3214/我仍然可以瀏覽CMS的目錄。

  • 我在做什麼錯了?
  • 即使在本地機器上它也能工作嗎?

感謝您的支持!

<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

回答

7

首先:並非所有的東西都在<location>區塊中工作。

我找不到<system.webServer><location>中不受支持的積極聲明,但我找不到任何建議允許它的情況。證據是在(全球)machine.config其中​​部分被定義爲使用IgnoreSection處理程序:即。它不是由標準的System.Configuration實現來處理的,而是配置處理的標準實現,它提供了對<location>的支持。

嘗試使用directoryBrowse元素將web.config添加到Cms文件夾中,以確認瀏覽被阻止。

0

的<directoryBrowse>指令控制僅通過http協議的目錄清單: http://msdn.microsoft.com/en-us/library/ms691327%28v=vs.90%29.aspx

它不會有一個y對代碼有影響,試圖從任何其他(甚至是你自己的)應用程序中訪問該目錄。

@編輯:編輯後,如果我得到你的權利 - 我想,你的意思是拒絕目錄瀏覽器是預期的功能:在指定的路徑使用瀏覽器顯示目錄的內容。是的,它可能不會在本地開發服務器中工作。試試IIs!

+0

目前我在Visual Studio中使用內置服務器。你認爲可以在IIS上工作嗎? – GibboK 2011-04-05 09:00:48

4

Gibbok,沒有什麼是錯在這裏,不要驚慌:)

假設你從內置的Visual Studio中的服務器,這通常是一個正常的情況下瀏覽您的網站。

我敢肯定,如果您使用上面的代碼移動到IIS,目錄瀏覽的行爲就像您想要的那樣。

試一下,在IIS中託管這個網站,讓我們知道發生了什麼,謝謝。

0

我正在嘗試相同的代碼。你有什麼事實上是正確的。這裏是reference

當然,這不是爲我工作,我不明白爲什麼,直到我讀了理查德的帖子,並記得有人把web.config文件放在該目錄中。該文件覆蓋主web.config文件中的行爲。在子目錄web.config中,directoryBrowse選項顯式打開(以及其他許多處理程序,yike!)。刪除該文件,上面的內容適用於我。它實際上將請求傳遞給下一個處理程序,這正是我想要的。

我在本地機器上使用IIS 7。