2009-08-18 83 views
4

ASP.NET中的應用程序文件夾用於存儲對運行網站至關重要的各種元素。我想要更深入地瞭解這些文件夾,特別是文件夾可訪問性。據對ASP.NET Web Site Layout的文章:瞭解ASP.NET應用程序文件夾

應用程序文件夾的內容,除了App_Themes文件夾 ,是 響應網絡 請求沒有送達,但它可以從 應用程序代碼進行訪問。

在任何瀏覽器請求到這些文件夾的結果是「404 - 未找到」。

那麼是什麼阻止文件夾一樣App_CodeApp_DataApp_WebReferencesbin等被提供給用戶?它是一個IIS硬編碼「不提供此文件夾?」它是一個權限配置嗎?無論如何,有意/無意地繞過這個?

+0

+1的鏈接 – bevacqua 2010-11-03 01:43:10

回答

3

在我的IIS7.5的配置,位於C發現:\ WINDOWS \ SYSTEM32 \ INETSRV \設置\的applicationHost.config有本節:

<hiddenSegments applyToWebDAV="true"> 
    <add segment="web.config" /> 
    <add segment="bin" /> 
    <add segment="App_code" /> 
    <add segment="App_GlobalResources" /> 
    <add segment="App_LocalResources" /> 
    <add segment="App_WebReferences" /> 
    <add segment="App_Data" /> 
    <add segment="App_Browsers" /> 
</hiddenSegments> 

See also IIS Documentation.

+0

好找!我運行IIS6,所以我挖了一遍,'applicationHost.config'不存在。可以在以下位置找到IIS6元數據庫:_systemroot_ \ System32 \ Inetsr \ MetaBase.xml;不幸的是沒有hiddenSegments元素。 – 2009-11-26 15:39:25

0

.net框架本身攔截對這些文件夾的請求(以及一系列應該允許瀏覽的其他文件類型),並將404返回給IIS,然後以404頁的形式傳回瀏覽器,找不到網頁」。

所以它不會發生在權限級別,甚至是IIS級別。它位於框架內部 - 可能位於全局web.config中的一個HttpHandler中。

如果你看看那裏,你可以看到大量的文件擴展名被明確配置爲不被提供。大概你可以調整設置,並使其服務,比如web.config文件爲xml(這與通常的說法是不提供此文件類型的行爲不同)。

值得注意的是,我沒有具體看到全局web.config文件中提到的任何特殊文件夾(app_code等)。也許它是在其他HttpHandlers內處理的 - 例如,.aspx的處理程序可能包含一些防止位於特殊文件夾中的.aspx文件的代碼等。

1

在Windows Server 2008上的IIS7中,ASP.NET更多緊密集成到整個處理流程中,所以我想象在IIS7中,ASP.NET很容易說「不,我不會去觸及它」。

在IIS6中,IIS本身對IIS的直接瞭解很少,而是全部通過ISAPI配置進行控制。

在IIS6 IIS管理器中,右鍵單擊一個網站,獲取屬性,轉到主目錄選項卡,然後單擊右下角的配置。這顯示了ISAPI應用程序擴展以及每個應用程序的完成情況。

對於所有的ASP.NET擴展(aspx,ascx,config,browser,其他許多),它指定要由C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll完成的處理

然後,ASP.NET系統爲C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG中的全局machine.config和/或web.config文件中定義的每個文件類型都註冊了處理程序

例如,在全球網絡上。配置文件,元素HttpHandlers的:

<add path="*.ascx" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/> 

所以它不只是這些特殊文件夾,但許多類型的文件,但許多類型的從瀏覽不允許保留的文件。

相關問題