Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este artículo le ayuda a resolver el problema que System.Security.SecurityException
se puede producir cuando se usa un directorio virtual que apunta a un recurso compartido remoto para hospedar un ASP de Microsoft. Aplicación basada en NET.
Versión original del producto: ASP.NET
Número de KB original: 320268
Síntomas
Cuando se usa un directorio virtual que apunta a un recurso compartido remoto para hospedar un ASP. La aplicación basada en NET puede recibir un mensaje de error similar a uno de los ejemplos siguientes:
Mensaje 1
Descripción de la excepción de seguridad: la aplicación intentó realizar una operación no permitida por la directiva de seguridad. Para conceder a esta aplicación el permiso necesario, póngase en contacto con el administrador del sistema o cambie el nivel de confianza de la aplicación en el archivo de configuración.
Detalles de la excepción: System.Security.SecurityException: Error de seguridad.
Error de origen:
Línea 30: bool estático privado __intialized = false; Línea 31: Línea 32: pública Global_asax() { Línea 33: if ((ASP. Global_asax.__intialized == false)) { Línea 34: ASP. Global_asax.__intialized = true;Mensaje 2
Error del servidor en la aplicación /ApplicationName.
Descripción del error del analizador: se produjo un error durante el análisis de un recurso necesario para atender esta solicitud. Revise los siguientes detalles de error de análisis específicos y modifique el archivo de origen adecuadamente.
Mensaje de error del analizador: No se pudo cargar el tipo ApplicationName.Global.
Error de origen: Línea 1: <%@ Application Codebehind="Global.asax.cs" Inherits="ApplicationName.Global" %> Source File: Path of Application\global.asax Line: 1
Causa
El System.Web
espacio de nombres no tiene aplicado AllowPartiallyTrustedCallersAttribute
. Para obtener más información, visite patrones y prácticas.
Cualquier código que no esté en el grupo de código My_Computer_Zone que no tenga este atributo requiere el derecho de usuario FullTrust . Por lo tanto, el recurso compartido remoto que contiene el contenido de las aplicaciones web requiere FullTrust.
Solución
Para resolver este comportamiento, conceda el derecho FullTrust al recurso compartido remoto:
En el servidor web, abra Herramientas administrativas y, a continuación, haga doble clic en Configuración de Microsoft .NET Framework.
Expanda Directiva de seguridad en tiempo de ejecución, máquina y, a continuación, expanda Grupos de código.
Haga clic con el botón derecho en All_Code y seleccione Nuevo.
Seleccione Crear un nuevo grupo de código. Asigne al grupo de código un nombre relevante, como el nombre del recurso compartido de aplicaciones. Seleccione Siguiente.
En la lista Elegir el tipo de condición de este grupo de código, seleccione DIRECCIÓN URL.
En el cuadro DIRECCIÓN URL , escriba la ruta de acceso del recurso compartido en el formato siguiente:
file:////\\computername\\sharename\*
Nota:
Reemplace computername por el nombre del equipo que hospeda el recurso compartido remoto. Reemplace sharename por el nombre del recurso compartido.
Seleccione Siguiente. En la página siguiente, seleccione Usar un conjunto de permisos existente y, a continuación, seleccione FullTrust.
Haga clic en Siguiente y después en Finalizar.
Reinicie Internet Information Services (IIS) para reiniciar el proceso de trabajo de ASP.NET.
Si la configuración de Microsoft .NET Framework no se muestra en Herramientas administrativas, puede instalar el Kit de desarrollo de software (SDK) de .NET Framework para agregar la configuración de Microsoft .NET Framework. En su lugar, puede ejecutar el siguiente comando para realizar el cambio:
Drive :\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -m -ag 1 -url "file:////\\computername\sharename\*" FullTrust -exclusive on
Para obtener más información sobre lo que hacen estos argumentos, ejecute el siguiente comando:
caspol.exe -?
Status
Este comportamiento es por diseño.
Más información
En esta configuración, la cuenta con la que se ejecuta el proceso de trabajo de ASP.NET debe tener derechos suficientes para el recurso compartido remoto. Puede establecer la cuenta en la que se ejecuta el proceso de trabajo mediante la <processmodel>
etiqueta en el archivo Machine.config .
Pasos para reproducir el comportamiento
- Cree un directorio virtual que apunte a un recurso compartido remoto.
- Cree una aplicación para el directorio virtual. Asegúrese de que el usuario que se conecta al recurso compartido tiene acceso de lectura al contenido remoto.
- En la
<processmodel>
etiqueta del archivo Machine.config , cambie el usuario a un usuario de dominio que tenga permisos de lista, lectura y ejecución en el recurso compartido remoto. - Cree un archivo .aspx insertado y, a continuación, coloque el archivo en el recurso compartido remoto.
- Realizar una solicitud para la página.
Referencias
Para obtener más información sobre los permisos que requiere la cuenta de ASPNET para ejecutar aplicaciones ASP.NET, consulte Introducción a ASP.NET Identity. Para obtener más información sobre la seguridad de ASP.NET, vea INFO: ASP.NET Security Overview.