Herencia de la configuración

Cuando el servidor recibe una solicitud de un recurso Web determinado, ASP.NET calcula las opciones de configuración correspondientes a ese recurso de forma jerárquica a partir de todos los archivos de configuración ubicados en la ruta de acceso al directorio virtual de la dirección URL solicitada. Por ejemplo, se podría crear un sitio Web con la estructura de archivos siguiente, donde el directorio raíz de la aplicación es el directorio virtual de aplicación (Vdir):

Normalmente, la última opción de configuración sobrescribe las opciones que se proporcionan en los directorios principales para la misma sección, pero el controlador de la sección puede implementar un esquema de herencia distinto.

Por ejemplo, como administrador, podrá configurar las opciones de la aplicación de modo que todos los usuarios tengan acceso a los recursos de ASP.NET ubicados en el directorio raíz (el directorio físico que el directorio virtual de la aplicación asigna), pero permitir únicamente a usuarios seleccionados el acceso a los recursos de ASP.NET en los dos subdirectorios.

Suponga que en el directorio SubDir1 existe un archivo Web.config y que en el directorio raíz de la aplicación y en SubDir2 no hay ninguno. En este caso, ASP.NET utiliza dos archivos de configuración. El archivo de nivel superior es el ubicado en el directorio raízdelsistema\Microsoft .NET \Framework\númerodeversión\CONFIG. Este archivo, denominado Machine.config, tiene validez en todo el equipo y todos los directorios y subdirectorios de ASP.NET heredan su configuración. Machine.config se suministra con .NET Framework y contiene muchas opciones predeterminadas de configuración de ASP.NET. La opción predeterminada para la sección de configuración de seguridad de este archivo permite a todos los usuarios el acceso a todos los recursos URL. En el directorio raíz de aplicación del ejemplo no existe ningún archivo de configuración que modifique la seguridad, de modo que todos los usuarios tendrán acceso a los recursos de ASP.NET que haya en él (ya que el directorio hereda las opciones del archivo de configuración del equipo). Si el archivo Web.config del directorio SubDir1 contiene una sección de configuración de seguridad que únicamente permite el acceso a determinados usuarios, SubDir2 heredará esta configuración. De este modo, todos los usuarios tendrán acceso a los recursos de ASP.NET en el directorio raíz de la aplicación, pero sólo algunos tendrán acceso a los recursos de ASP.NET de los directorios SubDir1 y SubDir2.

Las opciones de configuración de los directorios virtuales son independientes de la estructura física de los directorios; los directorios virtuales deben organizarse cuidadosamente para evitar problemas de configuración. Por ejemplo, podría existir una aplicación denominada MyResource.aspx que tiene la siguiente estructura física de directorios:

C:\Subdir1\Subdir2\MyResource.aspx

Supongamos que hay un archivo de configuración en Subdir1 y que se asigna un directorio virtual denominado Vdir1 a c:\Subdir y otro directorio virtual denominado Vdir2 a c:\Subdir1\Subdir2. Si un cliente tiene acceso al recurso ubicado físicamente en c:\Subdir1\Subdir2\MyResource.aspx mediante la dirección URL https://localhost/vdir1/subdir2/MyResource.aspx, el recurso heredará las opciones de configuración de Vdir1. Sin embargo, si el cliente tiene acceso al mismo recurso mediante la dirección URL https://localhost/vdir2/MyResource.aspx, no heredará la configuración de Vdir1. Por tanto, este modo de crear directorios virtuales puede causar resultados inesperados o incluso un error en la aplicación, y no es recomendable.

Nota   El sistema de configuración de ASP.NET sólo es aplicable a los recursos de ASP.NET (los registrados para su control por parte de ASP.NET con Aspnet_isapi.dll). De forma predeterminada, el sistema de configuración no concede autorización para utilizar recursos que no sean de ASP.NET. El acceso a los archivos ASP, HTML, TXT, GIF y JPEG, por ejemplo, se permite a todos los usuarios. En el ejemplo anterior, si está habilitada la exploración de directorios y no se aplica ninguna otra restricción, todos los usuarios podrán ver los archivos que no sean de ASP.NET ubicados en el directorio raíz de la aplicación, en SubDir1 o en Subdir2. Para obtener más información acerca de la seguridad de ASP.NET, vea Seguridad ASP.NET de aplicaciones Web.

Vea también

Configuración de ASP.NET | Configurar aplicaciones