Elemento <loadFromRemoteSources>

Especifica si se debe conceder plena confianza a los ensamblados cargados desde orígenes remotos en .NET Framework 4 y versiones posteriores.

Nota

Si se le ha dirigido a este artículo debido a un mensaje de error en la lista de errores del proyecto de Visual Studio o a un error de compilación, vea Uso de un ensamblado desde la Web en Visual Studio.

<configuration>
  <runtime>
    <loadFromRemoteSources>

Sintaxis

<loadFromRemoteSources
   enabled="true|false"/>

Atributos y elementos

En las siguientes secciones se describen los atributos, los elementos secundarios y los elementos primarios.

Atributos

Atributo Descripción
enabled Atributo necesario.

Especifica si se debe conceder plena confianza a un ensamblado que se carga desde un origen remoto.

Atributo habilitado

Valor Descripción
false No conceder plena confianza a las aplicaciones de orígenes remotos. Este es el valor predeterminado.
true Conceder plena confianza a las aplicaciones de orígenes remotos.

Elementos secundarios

Ninguno.

Elementos primarios

Elemento Descripción
configuration Elemento raíz de cada archivo de configuración usado por las aplicaciones de Common Language Runtime y .NET Framework.
runtime Contiene información sobre las opciones de inicialización del motor en tiempo de ejecución.

Comentarios

En .NET Framework 3.5 y versiones anteriores, si carga un ensamblado desde una ubicación remota, el código del ensamblado se ejecuta en confianza parcial con un conjunto de concesiones que depende de la zona desde la que se carga. Por ejemplo, si carga un ensamblado desde un sitio web, se carga en la zona de Internet y se le concede el conjunto de permisos de Internet. En otras palabras, se ejecuta en un espacio aislado de Internet.

A partir de .NET Framework 4, la directiva de seguridad de acceso del código (CAS) está deshabilitada y los ensamblados se cargan en plena confianza. Normalmente, esto concedería plena confianza a los ensamblados cargados con el método Assembly.LoadFrom que anteriormente se había aislado. Para evitar esto, la capacidad de ejecutar código en ensamblados cargados desde un origen remoto está deshabilitado de forma predeterminada. De forma predeterminada, si intenta cargar un ensamblado remoto, se produce FileLoadException con un mensaje de excepción como el siguiente:

System.IO.FileNotFoundException: Could not load file or assembly 'file:assem.dll' or one of its dependencies. Operation is not supported.
(Exception from HRESULT: 0x80131515)
File name: 'file:assem.dll' --->
System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly
to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default,
so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch.

Para cargar el ensamblado y ejecutar su código, debe:

  • Crear explícitamente un espacio aislado para el ensamblado (consulte Ejecución de código de confianza parcial en un espacio aislado).

  • Ejecutar el código del ensamblado en plena confianza. Para ello, configure el elemento <loadFromRemoteSources>. Permite especificar que los ensamblados que se ejecutan en confianza parcial en versiones anteriores de .NET Framework ahora se ejecutan en plena confianza en .NET Framework 4 y versiones posteriores.

Importante

Si el ensamblado no debe ejecutarse en plena confianza, no establezca este elemento de configuración. En su lugar, cree un AppDomain en un espacio aislado en el que cargar el ensamblado.

El atributo enabled para el elemento <loadFromRemoteSources> solo es efectivo cuando la seguridad de acceso del código (CAS) está desactivada. De forma predeterminada, la directiva CAS está deshabilitada en .NET Framework 4 y versiones posteriores. Si establece enabled en true, se concede plena confianza a los ensamblados remotos.

Si enabled no se establece en true, se produce una excepción FileLoadException en cualquiera de las condiciones siguientes:

  • El comportamiento de espacio aislado del dominio actual es diferente de su comportamiento en .NET Framework 3.5. Esto requiere que la directiva CAS se deshabilite y el dominio actual no esté en espacio aislado.

  • El ensamblado que se carga no procede de la zona MyComputer.

Establecer el elemento <loadFromRemoteSources> en true impide que se inicie esta excepción. Permite especificar que no confía en Common Language Runtime para meter en un espacio aislado los ensamblados cargados por seguridad, y que pueden ejecutarse en plena confianza.

Notas

  • En .NET Framework 4.5 y versiones posteriores, los ensamblados de recursos compartidos de red locales (es decir, la zona de seguridad de la intranet local) se ejecutan de forma predeterminada en plena confianza; no es necesario habilitar el elemento <loadFromRemoteSources>. En el caso de zonas de seguridad distintas de la máquina o la intranet locales, establezca el valor en true.

  • Si se ha copiado una aplicación desde la Web, Windows la marca como una aplicación web, incluso si reside en el equipo local. Puede cambiar esa designación cambiando sus propiedades de archivo, o puede usar el elemento <loadFromRemoteSources> para conceder plena confianza al ensamblado. Como alternativa, puede usar el método UnsafeLoadFrom para cargar un ensamblado local que el sistema operativo ha marcado como cargado desde la Web.

  • Es posible que aparezca FileLoadException en una aplicación que se esté ejecutando en una aplicación de Windows Virtual PC. Esto puede ocurrir cuando intenta cargar un archivo desde carpetas vinculadas en el equipo de hospedaje. También se puede producir cuando intenta cargar un archivo desde una carpeta vinculada a través de Servicios de Escritorio remoto (Terminal Services). Para evitar la excepción, establezca enabled en true.

Archivo de configuración

Este elemento se usa normalmente en el archivo de configuración de la aplicación, pero se puede usar en otros archivos de configuración en función del contexto. Para obtener más información, vea el artículo Más usos implícitos de la directiva CAS: loadFromRemoteSources en el blog de seguridad de .NET.

Ejemplo

En el ejemplo siguiente se muestra cómo conceder plena confianza a los ensamblados cargados desde orígenes remotos.

<configuration>
   <runtime>
      <loadFromRemoteSources enabled="true"/>
   </runtime>
</configuration>

Consulte también