элемент <loadFromRemoteSources>

Указывает, должны ли сборки, загруженные из удаленных источников, предоставлять полное доверие в .NET Framework 4 и более поздних версий.

Замечание

Если вы были направлены в эту статью из-за сообщения об ошибке в списке ошибок проекта Visual Studio или ошибке сборки, см. статью "Практическое руководство. Использование сборки из Интернета в Visual Studio".

<configuration>
  <runtime>
    <loadFromRemoteSources>

Синтаксис

<loadFromRemoteSources
   enabled="true|false"/>

Атрибуты и элементы

В следующих разделах описаны атрибуты, дочерние и родительские элементы.

Attributes

Свойство Description
enabled Обязательный атрибут.

Указывает, должна ли сборка, загруженная из удаленного источника, предоставлять полное доверие.

атрибут включено

Ценность Description
false Не предоставляйте полное доверие приложениям из удаленных источников. Это значение по умолчанию.
true Предоставление полного доверия приложениям из удаленных источников.

Дочерние элементы

Нет.

Родительские элементы

Элемент Description
configuration Корневой элемент в любом файле конфигурации, используемом средой CLR и приложениями .NET Framework.
runtime Содержит сведения о параметрах инициализации среды выполнения.

Замечания

В .NET Framework 3.5 и более ранних версиях при загрузке сборки из удаленного расположения код в сборке выполняется в частичном доверии с набором грантов, зависящим от зоны, из которой она загружается. Например, если вы загружаете сборку с веб-сайта, она загружается в зону Интернета и предоставляет набор разрешений Интернета. Другими словами, он выполняется в песочнице Интернета.

Начиная с .NET Framework 4 политика безопасности доступа к коду (CAS) отключена, а сборки загружаются в полном доверии. Обычно это дает полное доверие сборкам, загруженным с Assembly.LoadFrom помощью метода, который ранее был песочниц. Чтобы предотвратить это, возможность запуска кода в сборках, загруженных из удаленного источника, по умолчанию отключена. По умолчанию при попытке загрузить удаленную сборку FileLoadException возникает сообщение об исключении, например следующее:

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.

Чтобы загрузить сборку и выполнить его код, необходимо:

  • Явно создайте песочницу для сборки (см. инструкции. Запуск частично доверенного кода в песочнице).

  • Запустите код сборки в полном доверии. Это можно сделать, настроив <loadFromRemoteSources> элемент. Он позволяет указать, что сборки, которые выполняются в частичном доверии в более ранних версиях .NET Framework, теперь выполняются в полном доверии в .NET Framework 4 и более поздних версиях.

Это важно

Если сборка не должна выполняться в полном доверии, не устанавливайте этот элемент конфигурации. Вместо этого создайте песочницу AppDomain , в которой необходимо загрузить сборку.

Атрибут enabled элемента <loadFromRemoteSources> действует только при отключении безопасности доступа к коду (CAS). По умолчанию политика CAS отключена в .NET Framework 4 и более поздних версиях. Если задано значение enabledtrue, удаленные сборки получают полное доверие.

Если enabled не задано значение true, FileLoadException создается исключение в любом из следующих условий:

  • Поведение песочницы текущего домена отличается от его поведения в .NET Framework 3.5. Для этого требуется отключить политику CAS, а текущий домен не должен быть песочницей.

  • Загружаемая сборка не из MyComputer зоны.

<loadFromRemoteSources> Установка элемента для true предотвращения возникновения этого исключения. Он позволяет указать, что вы не используете среду CLR для песочницы загруженных сборок для безопасности, и что их можно разрешить выполнять в полном доверии.

Примечания.

  • В .NET Framework 4.5 и более поздних версиях сборки на локальных сетевых ресурсах (т. е. зона безопасности локальной интрасети) выполняются по умолчанию в полном доверии; Элемент не требуется включить <loadFromRemoteSources> . Для зон безопасности, отличных от локального компьютера или локальной интрасети, задайте значение true.

  • Если приложение скопировано из Интернета, оно помечается Windows как веб-приложение, даже если оно находится на локальном компьютере. Вы можете изменить это обозначение, изменив его свойства файла или используя <loadFromRemoteSources> элемент для предоставления полного доверия сборки. В качестве альтернативы можно использовать UnsafeLoadFrom метод для загрузки локальной сборки, помеченной операционной системой как загруженная из Интернета.

  • Вы можете получить FileLoadException приложение, работающее в приложении виртуального компьютера Windows. Это может произойти при попытке загрузить файл из связанных папок на компьютере размещения. Это также может произойти при попытке загрузить файл из папки, связанной со службами удаленных рабочих столов (службами терминалов). Чтобы избежать исключения, установите значение enabledtrue.

Файл конфигурации

Этот элемент обычно используется в файле конфигурации приложения, но может использоваться в других файлах конфигурации в зависимости от контекста. Дополнительные сведения см. в статье "Более неявное использование политики CAS: loadFromRemoteSources " в блоге по безопасности .NET.

Example

В следующем примере показано, как предоставить полное доверие сборкам, загруженным из удаленных источников.

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

См. также