Tema:Web App
Pregunta: Configuración con Herencia
Respuesta:
Cuando el servidor recibe una petición de un recurso web ASP.NET usa las
opciones de configuración para este recurso mediante la herencia,usando
todos los ficheros de configuración localizados en el directorio virtual
de la URL requerida. Por ejemplo, si tienes un Web Site con la siguiente
estructura donde el directorio raiz de la aplicación es el directorio
virtual(Vdir)
Cita: -Application Root
-SubDir1-SubDir2
Normalmente las ultimas opciones de configuración sobreescribe a las mismas
secciones de configuración localizadas en el directorio padre, pero la
sección cabecera de configuración tiene una forma de herencia distinta.
Por ejemplo el administrador puede configurar las opciones de configuración
de la aplicación para permitir a todos los usuarios acceder a los recursos
ASP.NET en el directorio padre de la aplicación(el directorio fisico mapeado
por el directorio virtual de la aplicación), pero solo podrá permitir
el acceso a los otros dos subdirectorios a los usuarios que el desee.
Asumimos que hay un Web.Config en el SubDir1 y no existe ningún Web.Config
ni en el directorio raiz(padre) ni en el SubDir2. En este caso ASP.NET
está usando dos ficheros de configuración, el fichero Machine.Config que se
encuentra en %windir%\Microsoft.NET\Framework\version\CONFIG y el fichero
Web.Config del SubDir1. El fichero Machine.Config es el fichero de configuración
a nivel de máquina, y todos los directorios y subdirectorios ASP.NET heredan
dicha configuración. Este fichero de configuración se puede configurar tal como
se desee,y por defecto permite el acceso de todos los usuarios a los recursos
ASP.NET.
Como no existe un fichero de configuración en el directorio raiz de nuestra
aplicación ejemplo debido a la configuración por defecto del Machine.Config
todos los usuarios podrán acceder a los recursos localizados en el directorio
raiz.
SubDir1 SI contiene un fichero de configuración(Web.Config) y este solo
permite el acceso al directorio de determinados usuarios. SubDir2 al
encontrarse "por encima" de SubDir1 heredará las opciones de configuración
de SubDir1.
En conclusión, todos los usuarios tienen acceso a los recursos del directorio
raiz pero solo unos determinados usuarios(configurados en el Web.Config) tienen
la posibilidad de acceder a los recursos de SubDir1 y SubDir2
Las opciones de configuración de los directorios virtuales son independientes
de la estructura de directorio física y los directorios virtuales deben
estar organizados de una manera eficiente para evitar problemas de configuración.
Por ejemplo si tienes una aplicación llamada MyResource.aspx con la siguiente
estructura física de directorios C:\Subdir1\Subdir2\MyResource.aspx.
Asumimos que el fichero de configuración(Web.Config) se encuentra localizado en
Subdir1 y el directorio virtual llamado Vdir1 esta mapeado a c:\Subdir1 y
un directorio virtual llamado Vdir2 está mapeado a c:\Subdir1\Subdir2.
Si el cliente accede al recurso virtual localizado en c:\Subdir1\Subdir2\MyResource.aspx
usando la URL
http://localhost/vdir1/subdir2/MyResource.aspx, el recurso hereda
las opciones de configuración de Vdir1, si embargo si el cliente accede
al mismo recurso usando la URL
http://localhost/vdir1/MyResource.aspx asi
no hereda las opciones de configuración de Vdir1, por eso crear directorios
virtuales de esta manera puede causar resultados inesperados o hacer que la aplicación
no funcione de forma correcta, por lo que no está recomendado.
Cabe recordar que las opciones de configuración de ASP.NET solo afectan
a los recursos de ASP.NET,es decir, a los que se encuentran registrados
usando Aspnet_isapi.dll. Las opciones de configuración no da autorización
para recursos que no son de ASP.NET como por ejemplo ficheros ASP,HTML,
TXT,GIF y ficheros JPG por lo que estos ficheros podrán ser accedidos por todos los
usuarios.
Texto original en inglés en
http://msdn.microsoft.com/library/de...nheritance.asp
Traducido por SunDarK
Texto perteneciente al curso DCE 2ª Estrella Módulo 5