Escenarios de configuración de ASP.NET

Actualización: noviembre 2007

Cuando el servidor recibe una solicitud de un recurso Web determinado, ASP.NET calcula los valores 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. La mayoría de los valores de configuración locales reemplazan a los de los archivos de configuración primarios.

Escenario de configuración 1

Por ejemplo, se podría crear un sitio Web con la estructura de archivos físicos siguiente, donde el directorio Application Root es el directorio virtual de la aplicación.

Normalmente, el último valor de configuración sobrescribe la configuración correspondiente a la misma sección y que se incluye en los directorios primarios. En el caso de un elemento de colección, no se reemplaza la configuración, sino que se agrega a la colección.

Nota:

Un controlador de sección personalizado podría implementar un esquema de herencia diferente.

Supongamos que en el directorio SubDir1 existe un archivo Web.config y que en el directorio Application Root o SubDir2 no hay ninguno. En este caso, ASP.NET está utilizando tres archivos de configuración para calcular los valores de configuración del directorio SubDir1. El archivo de nivel superior es el que se encuentra en el directorio %systemroot%\Microsoft .NET \Framework\versionNumber\CONFIG. Este archivo, que se denomina Machine.config, está en el nivel del equipo. Todas las aplicaciones de .NET Framework que ejecutan la versión especificada de .NET Framework (versionNumber) heredan la configuración de este archivo. El siguiente archivo de nivel superior es el archivo Web.config raíz, que está en la misma ubicación. Todas las aplicaciones ASP.NET que ejecutan la versión especificada de .NET Framework heredan su configuración. El tercer archivo de configuración es el archivo Web.config, que se encuentra en el directorio SubDir1.

Supongamos que el archivo Web.config del directorio SubDir1 contiene el elemento anonymousIdentification con el atributo enabled establecido en true. El valor predeterminado del atributo enabled es false. Éste es un valor predeterminado interno y no se especifica en ninguno de los archivos de configuración raíz. Dado que no hay ningún archivo de configuración en el directorio Application Root o SubDir2 que modifique el elemento anonymousIdentification, los usuarios anónimos no tienen acceso a los recursos ASP.NET de estos directorios. Sin embargo, los usuarios anónimos tienen acceso a los recursos ASP.NET del directorio SubDir1.

Nota de seguridad:

El sistema de configuración de ASP.NET sólo se aplica a los recursos ASP.NET, que son los recursos registrados para ser controlados por ASP.NET mediante Aspnet_isapi.dll. De manera predeterminada, el sistema de configuración no concede autorización para recursos que no sean 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 pueden ver los archivos que no sean de ASP.NET y que se encuentren en el directorio raíz de la aplicación, SubDir1 y SubDir2. Para obtener más información acerca de la seguridad de ASP.NET, vea Seguridad de aplicaciones Web ASP.NET.

Escenario de configuración 2

El sitio Web siguiente tiene una estructura de archivos según la cual el directorio virtual de la aplicación se asigna al directorio raíz de la aplicación (MyAppRootDir).

MyAppRootDir
    SubDir1
        SubDir1A
    SubDir2

Excepto en los casos descritos en la sección "Restricciones en la herencia de ASP.NET" de Jerarquía de archivos y herencia de la configuración de ASP.NET, un valor de configuración de un directorio reemplaza la configuración especificada en los directorios primarios. Por ejemplo, se puede definir la configuración de una aplicación de manera que se conceda a todos los usuarios acceso a los recursos ASP.NET de MyAppRootDir y SubDir2, pero sólo a determinados usuarios acceso a los recursos ASP.NET de SubDir1 y SubDir1A, por medio de los pasos siguientes:

  1. Deje MyAppRootDir tal como está. Los recursos ASP.NET de MyAppRootDir heredan la configuración predeterminada del archivo Machine.config, uno de los cuales concede acceso anónimo. En esta fase, MyAppRootDir y los tres subdirectorios heredan esta configuración de autenticación.

  2. Coloque un archivo Web.config en SubDir1 con la autenticación establecida de tal forma que sólo se permita a determinados usuarios el acceso a SubDir1. De esta forma se reemplaza el acceso anónimo que otorga el valor del archivo Machine.config y la herencia de esta configuración se aplica hasta SubDir1A, en un nivel inferior. SubDir2, que está en el mismo nivel que SubDir1, no hereda el valor de autenticación de SubDir1.

Todas las aplicaciones ASP.NET heredan la configuración predeterminada del archivo Web.config en el nivel Web raíz. 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 concede acceso a determinados usuarios, SubDir1A hereda esa configuración. De este modo, todos los usuarios tendrán acceso a los recursos ASP.NET del directorio raíz de la aplicación y SubDir2, pero sólo algunos tendrán acceso a los recursos ASP.NET de SubDir1 y SubDir1A.

Escenario de configuración 3

Los valores de configuración de los directorios virtuales, que son nombres descriptivos de directorios que simplifican las rutas de acceso y ocultan los nombres reales de los directorios, no dependen de la estructura de directorios físicos. Como resultado, los directorios virtuales se deben organizar con cuidado para evitar problemas de configuración. Por ejemplo, podría configurar directorios virtuales para recuperar la página ASP.NET denominada MyResource.aspx de la siguiente estructura de directorios físicos.

MyDir
    SubDir1 (mapped from VDir1)
        SubDir1A (mapped from VDir1A)
            MyResource.aspx
    SubDir2

En este ejemplo, hay un archivo Web.config en SubDir1 y otro archivo Web.config en SubDir1A. Si un cliente tiene acceso a C:\Subdir1\Subdir1A\MyResource.aspx a través de la dirección URL https://localhost/vdir1/subdir1A/MyResource.aspx, el recurso hereda los valores de configuración de Vdir1. Sin embargo, si el cliente tiene acceso al mismo recurso mediante la dirección URL https://localhost/vdir1A/MyResource.aspx, no heredará la configuración de Vdir1. Por consiguiente, no se recomienda crear directorios virtuales de esta manera, porque se pueden producir resultados inesperados o incluso errores de la aplicación.

Servicios de Internet Information Server (IIS) es el servidor Web para todos los recursos publicados en el Web. El sistema de configuración de ASP.NET sólo se aplica a los recursos ASP.NET, que son los recursos registrados para ser controlados por ASP.NET mediante Aspnet_isapi.dll. De manera predeterminada, el sistema de configuración no proporciona seguridad para recursos que no sean ASP.NET. Por ejemplo, todos los usuarios tienen acceso a los archivos ASP, HTML, TXT, GIF y JPEG. En el ejemplo anterior, si está habilitada la exploración de directorios y no se aplica ninguna otra restricción, todos los usuarios pueden ver los archivos que no sean de ASP.NET y que se encuentren en el directorio raíz de la aplicación, SubDir1 y SubDir2.

Vea también

Otros recursos

Administrar sitios web ASP.NET

Configurar aplicaciones