Элемент <loadFromRemoteSources>

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

Примечание

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

<configuration>
  <runtime>
    <loadFromRemoteSources>

Синтаксис

<loadFromRemoteSources
   enabled="true|false"/>  

Элементы и атрибуты

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

Атрибуты

Атрибут Описание
enabled Обязательный атрибут.

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

Включенный атрибут

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

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

Отсутствует.

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

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

Remarks

В платформа .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 и более поздних версиях. Если задано enabled значение true , удаленным сборкам предоставляется полное доверие.

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

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

  • Загружаемая сборка не принадлежит MyComputer зоне.

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

Примечания

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

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

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

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

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

Пример

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

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

См. также