45IT.COM- 电脑学习从此开始!
DIY硬件教程攒机经验装机配置
设计Photoshop网页设计特效
系统注册表DOS系统命令其它
存储主板显卡外设键鼠内存
维修显卡CPU内存打印机
WinXPVistaWin7unix/linux
CPU光驱电源/散热显示器其它
修技主板硬盘键鼠显示器光驱
办公ExcelWordPowerPointWPS
编程数据库CSS脚本PHP
网络局域网QQ服务器
软件网络系统图像安全
页面导航: 首页 > 电脑学院 > 服务器技术 >

win2003 ASP.NET——配置继承

电脑软硬件应用网 45IT.COM 时间:2005-12-30 21:01 作者:45IT收集

当服务器接收到对于特定 Web 资源的请求时,ASP.NET 就会使用所请求的 URL 的虚拟目录路径中所有的配置文件来分级计算该资源的配置设置。例如,您有一个网站具有如下的文件结构,其中应用程序的根目录就是应用程序虚拟目录 (Vdir)。

在通常情况下,最后一个配置设置会覆盖父目录中提供的相同节的设置,但节处理程序可能会执行某种不同的继承方案。

例如,作为一名管理员,您可以将应用程序的设置配置为允许所有用户访问应用程序根目录(即映射到应用程序虚拟目录的物理路径)中的 ASP.NET 资源,而只有选定的用户才能访问两个子目录中的 ASP.NET 资源。

假定 SubDir1 目录中有 Web.config 文件而应用程序根目录或 SubDir2 目录中却没有。在这种情况下,ASP.NET 使用两个配置文件。级别最高的文件是位于 systemroot\Microsoft .NET \Framework\versionNumber\CONFIG 目录中的文件。该文件名为 Machine.config,它是计算机级别的文件,所有 ASP.NET 目录和子目录都继承其设置。Machine.config 随 .NET Framework 提供,其中包含了许多默认的 ASP.NET 设置。该文件的安全配置节的默认配置允许所有用户访问全部 URL 资源。在示例的应用程序根目录中没有对安全性进行修改的配置文件,因此所有用户都有权访问其中 ASP.NET 资源(因为该目录继承了计算机级别的配置文件的设置)。如果 SubDir1 目录中的 Web.config 文件包含了仅允许部分用户访问的安全配置节,那么 SubDir2 会继承该设置。因此,所有的用户都有权访问应用程序根目录中的 ASP.NET 资源,但是只有部分用户可以访问 SubDir1 和 SubDir2 中的 ASP.NET 资源。

虚拟目录的配置设置是与物理目录结构无关,虚拟目录必须细心组织,以避免产生配置问题。例如,可能有一个名为 MyResource.aspx 的应用程序具有如下物理目录结构。

C:\Subdir1\Subdir2\MyResource.aspx

假定配置文件位于 Subdir1 中,名称为 Vdir1 的虚拟目录映射到 c:\Subdir1 上,名称为 Vdir2 的虚拟目录映射到 c:\Subdir1\Subdir2 上。如果客户端使用 URL http://localhost/vdir1/subdir2/MyResource.aspx 访问物理路径为 c:\Subdir1\Subdir2\MyResource.aspx 的资源,则该资源从 Vdir1 继承配置设置。然而,如果客户端使用 URL http://localhost/vdir2/MyResource.aspx 来访问相同的资源,则该资源不会从 Vdir1 继承设置。因此,按照这样的方式创建虚拟目录会产生预料不到的结果,甚至使应用程序不能运行。我们并不建议您这样做。

注意 ASP.NET 配置系统仅适用于 ASP.NET 资源(通过 Aspnet_isapi.dll 注册以便由 ASP.NET 处理的资源)。在默认情况下,配置系统不提供对于非 ASP.NET 资源的授权。例如,所有的用户都可以访问 ASP、HTML、TXT、GIF 和 JPEG 文件。在前面的示例中,如果启用了目录浏览且没有其他限制,则所有用户都可以查看应用程序根目录、SubDir1 和 SubDir2 中的非 ASP.NET 文件。有关 ASP.NET 安全的详细信息,请参阅 ASP.NET 安全。


配置 <location> 设置
通过使用具有适当 path 属性的 <location> 标记,可将配置设置应用到特定的资源。path 属性可用于指明应用特殊配置设置的特定文件或子目录。

例如,下列配置文件在三个级别上指定了设置:

应用于当前目录和所有子目录的设置,即包含在顶级 <configuration> 标记中的所有内容。 
应用于 Sub1 子目录的设置,即包含在路径属性设置为 Sub1 的 <location> 标记中的所有内容。 
应用于 Sub2 子目录的设置,即包含在路径属性设置为 Sub2 的 <location> 标记中的所有内容。 
<configuration>
   <system.web>  
      <sessionState cookieless="true" timeout="10"/>
   </system.web>
         
   <!-- "Sub1" 子目录的配置。 -->
   <location path="sub1">
      <system.web>
         <httpHandlers>
            <add verb="*" path="Sub1.Scott" type="Sub1.Scott"/>
            <add verb="*" path="Sub1.David" type="Sub1.David"/>
         </httpHandlers>
      </system.web>
   </location>
   
   <!-- "Sub2" 子目录的配置。 -->
   <location path="sub2">
      <system.web>
         <httpHandlers>
            <add verb="*" path="Sub2.Scott" type="Sub2.Scott"/>
            <add verb="*" path="Sub2.David" type="Sub2.David"/>
         </httpHandlers>
      </system.web>
   </location>
</configuration>


锁定配置设置
默认情况下,位于子目录的配置文件覆盖并扩展父配置文件中定义的所有配置设置。在应用程序宿主方案中,管理员通常要锁定或禁止他人访问站点上的某些设置以免这些设置被修改。例如,管理员可能要锁定宿主应用程序的沙盒安全设置,以防止 Web 用户攻击该系统。

管理员可通过将 allowOverride="false" 属性添加到 <location> 指令中来锁定配置设置。它通知配置系统:如果低级配置文件试图覆盖此锁定 <location> 指令中定义的任何配置节,则引发错误。

以下配置文件示例(可在主系统级别或站点级别存储该文件)锁定两个不同的 ASP.NET 应用程序(application1 和 application2)的信任级别。

<configuration>
   <location path="application1" allowOverride="false">
      <system.web>
         <trust level="High"/>
      </system.web>
   </location>
     
   <location path="application2" allowOverride="false">
      <system.web>
         <trust level="Medium"/>
      </system.web>
   </location>
</configuration>
如果使用以下示例中的配置设置覆盖上一示例中的配置设置,就会生成一个配置系统错误。

<configuration>
   <system.web>
      <trust level="Full"/>
   </system.web>
</configuration>

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
无法在这个位置找到: baidushare.htm
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
推荐知识