2009-08-18 86 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"/> 

所以它不只是这些特殊文件夹,但许多类型的文件,但许多类型的从浏览不允许保留的文件。

相关问题