System.Security.SecurityException cuando el directorio virtual apunta a un recurso compartido remoto en ASP.NET

Este artículo le ayuda a resolver el problema que se puede producir al usar un directorio virtual que apunta a un recurso compartido remoto para hospedar una aplicación basada en Microsoft ASP.NET System.Security.SecurityException usuario.

Versión del producto original:   ASP.NET
Número KB original:   320268

Síntomas

Cuando usa un directorio virtual que apunta a un recurso compartido remoto para hospedar una aplicación basada en ASP.NET, puede recibir un mensaje de error similar a uno de los ejemplos siguientes:

  • Mensaje 1

    Descripción de 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 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: public Global_asax() { Line 33: if ((ASP. Global_asax.__intialized == false)) { Línea 34: ASP. Global_asax.__intialized = true;

  • Mensaje 2

    Error de servidor en /ApplicationName Application.
    Descripción del error del analizador: se produjo un error durante el análisis de un recurso necesario para dar servicio a esta solicitud. Revise los siguientes detalles de error de análisis específicos y modifique el archivo de origen correctamente.
    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 el AllowPartiallyTrustedCallersAttribute aplicado. Para obtener más información, visite patrones & prácticas.

Cualquier código que no esté en el grupo My_Computer_Zone código 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:

  1. En el servidor web, abra Herramientas administrativas y, a continuación, haga doble clic en Configuración .NET Framework Microsoft.

  2. Expanda Directiva de seguridad en tiempo de ejecución, equipo y, a continuación, grupos de código.

  3. Haga clic con el botón All_Code y, a continuación, seleccione Nuevo.

  4. Select Create a new code group. Asigne al grupo de código un nombre relevante, como el nombre del recurso compartido de aplicaciones. Seleccione Siguiente.

  5. En la lista Elegir el tipo de condición para este grupo de código, seleccione DIRECCIÓN URL.

  6. En el cuadro Dirección URL, escriba la ruta de acceso del recurso compartido en el siguiente formato:
    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.

  7. Seleccione Siguiente. En la página siguiente, seleccione Usar un conjunto de permisos existente y, a continuación, seleccione FullTrust.

  8. Seleccione Siguiente y, a continuación, seleccione Finalizar.

  9. Reinicie Internet Information Services (IIS) para reiniciar el ASP.NET de trabajo.

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 Microsoft .NET Framework Configuration. 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 acerca de lo que hacen estos argumentos, ejecute el siguiente comando:

caspol.exe -?

Estado

Este comportamiento es una característica del diseño de la aplicación.

Más información

En esta configuración, la cuenta con la que se ejecuta ASP.NET proceso de trabajo debe tener suficientes derechos para el recurso compartido remoto. Puede establecer la cuenta en la que se ejecuta el proceso de trabajo mediante la <processmodel> etiqueta del archivo Machine.config trabajo.

Pasos para reproducir el comportamiento

  1. Cree un nuevo directorio virtual que apunta a un recurso compartido remoto.
  2. Cree una aplicación para el directorio virtual. Asegúrese de que el usuario que se conecta al recurso compartido tenga acceso de lectura al contenido remoto.
  3. En la etiqueta del archivoMachine.config, cambie el usuario a un usuario de dominio que tenga permisos de lista, lectura y ejecución <processmodel> en el recurso compartido remoto.
  4. Cree un archivo .aspx en línea y, a continuación, coloque el archivo en el recurso compartido remoto.
  5. Realice una solicitud para la página.

Referencias

Para obtener más información acerca de los permisos que requiere la cuenta ASPNET para ejecutar ASP.NET aplicaciones, vea Introduction to ASP.NET Identity. Para obtener más información sobre ASP.NET seguridad, vea INFO: ASP.NET Security Overview.