Élément <loadFromRemoteSources>

Spécifie si les assemblys chargés à partir de sources distantes doivent bénéficier d’une confiance totale dans .NET Framework 4 et versions ultérieures.

Notes

Si vous avez été dirigé vers cet article en raison d’un message d’erreur dans la liste d’erreurs du projet Visual Studio ou d’une erreur de build, consultez Guide pratique pour utiliser un assembly provenant du web dans Visual Studio.

<configuration>
  <runtime>
    <loadFromRemoteSources>

Syntaxe

<loadFromRemoteSources
   enabled="true|false"/>

Attributs et éléments

Les sections suivantes décrivent des attributs, des éléments enfants et des éléments parents.

Attributs

Attribut Description
enabled Attribut requis.

Spécifie si un assembly chargé à partir d’une source distante doit bénéficier d’une confiance totale.

Attribut enabled

Valeur Description
false Ne pas accorder une confiance totale aux applications provenant de sources distantes. Il s’agit de la valeur par défaut.
true Accorder une confiance totale aux applications provenant de sources distantes.

Éléments enfants

Aucune.

Éléments parents

Élément Description
configuration Élément racine de chaque fichier de configuration utilisé par le Common Language Runtime et les applications .NET Framework.
runtime Contient des informations sur les options d'initialisation du runtime.

Notes

Dans .NET Framework 3.5 et versions antérieures, si vous chargez un assembly à partir d’un emplacement distant, le code de l’assembly s’exécute en confiance partielle avec un jeu d’octroi qui dépend de la zone à partir de laquelle il est chargé. Par exemple, si vous chargez un assembly à partir d’un site web, il est chargé dans la zone Internet et reçoit le jeu d’autorisations Internet. En d’autres termes, il s’exécute dans un bac à sable Internet.

À compter de .NET Framework 4, la stratégie de sécurité de l’accès au code (CAS) est désactivée et les assemblys sont chargés en toute confiance. En règle générale, cela accorderait une confiance totale aux assemblys chargés avec la méthode Assembly.LoadFrom précédemment en bac à sable (sandbox). Pour éviter cela, la possibilité d’exécuter du code dans des assemblys chargés à partir d’une source distante est désactivée par défaut. Par défaut, si vous tentez de charger un assembly distant, un FileLoadException avec un message d’exception comme celui qui suit est levée :

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.

Pour charger l’assembly et exécuter son code, vous devez :

  • Créer explicitement un bac à sable pour l’assembly (voir Guide pratique pour exécuter du code d’un niveau de confiance partiel dans un bac à sable (sandbox)).

  • Exécuter le code de l’assembly en toute confiance. Pour ce faire, configurez l’élément <loadFromRemoteSources>. Il vous permet de spécifier que les assemblys qui s’exécutent en confiance partielle dans les versions antérieures de .NET Framework s’exécutent désormais en confiance totale dans .NET Framework 4 et les versions ultérieures.

Important

Si l’assembly ne doit pas s’exécuter en confiance totale, ne définissez pas cet élément de configuration. Au lieu de cela, créez un AppDomain en bac à sable dans lequel charger l’assembly.

L’attribut enabled de l’élément <loadFromRemoteSources> est effectif uniquement lorsque la sécurité de l’accès au code (CAS) est désactivée. Par défaut, la stratégie CAS est désactivée dans .NET Framework 4 et versions ultérieures. Si vous définissez enabled sur true, les assemblys distants bénéficient d’une confiance totale.

Si enabled n’est pas défini sur true, une FileLoadException est levée dans l’une des conditions suivantes :

  • Le comportement de bac à sable du domaine actuel est différent de son comportement dans .NET Framework 3.5. Cela nécessite que la stratégie d’administration centrale soit désactivée et que le domaine actuel ne soit pas en bac à sable (sandbox).

  • L’assembly en cours de chargement ne provient pas de la zone MyComputer.

La définition de l’élément <loadFromRemoteSources> sur true empêche cette exception d’être levée. Cela vous permet de spécifier que vous ne vous appuyez pas sur le Common Language Runtime pour mettre en bac à sable les assemblys chargés pour la sécurité, et qu’ils peuvent être autorisés à s’exécuter en toute confiance.

Notes

  • Dans .NET Framework 4.5 et versions ultérieures, les assemblys sur les partages de réseau local s’exécutent en confiance totale par défaut (c’est à dire dans la zone de sécurité de l’Intranet local). Il n’est pas nécessaire d’activer l’élément <loadFromRemoteSources>. Pour les zones de sécurité autres que l’ordinateur local ou l’intranet local, définissez la valeur sur true.

  • Si une application a été copiée à partir du web, elle est signalée par Windows comme étant une application web, même si elle réside sur l’ordinateur local. Vous pouvez modifier cette désignation en modifiant ses propriétés de fichier, ou vous pouvez utiliser l’élément pour accorder à l’assembly <loadFromRemoteSources> une confiance totale. En guise d’alternative, vous pouvez utiliser la méthode UnsafeLoadFrom pour charger un assembly local que le système d’exploitation a marqué comme ayant été chargé à partir du web.

  • Vous pouvez obtenir une application FileLoadException qui s’exécute dans une application Windows Virtual PC. Cela peut se produire lorsque vous essayez de charger un fichier à partir de dossiers liés sur l’ordinateur d’hébergement. Cela peut également se produire lorsque vous essayez de charger un fichier à partir d’un dossier lié via les services Bureau à distance (services Terminal). Pour éviter l’exception, définissez enabled sur true.

Fichier de configuration

Cet élément est généralement utilisé dans le fichier de configuration de l’application, mais peut être utilisé dans d’autres fichiers de configuration en fonction du contexte. Pour plus d’informations, consultez l’article Autres utilisations implicites de la stratégie CAS:loadFromRemoteSources dans le blog de sécurité .NET.

Exemple

L’exemple suivant montre comment accorder une confiance totale aux assemblys chargés à partir de sources distantes.

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

Voir aussi