配置继承

当服务器接收到对于特定 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 安全



相关主题


© 1997-2003 Microsoft Corporation。保留所有权利