Compartilhar via


<loadFromRemoteSources> elemento

Especifica se os assemblies carregados de fontes remotas devem receber confiança total no .NET Framework 4 e posterior.

Observação

Se você foi direcionado para este artigo devido a uma mensagem de erro na lista de erros do projeto do Visual Studio ou a um erro de build, consulte Como usar um assembly da Web no Visual Studio.

<configuração>
   <Runtime>
     <loadFromRemoteSources>

Sintaxe

<loadFromRemoteSources
   enabled="true|false"/>

Atributos e elementos

As seções a seguir descrevem atributos, elementos filho e elementos pai.

Attributes

Attribute Description
enabled Atributo necessário.

Especifica se um assembly carregado de uma fonte remota deve receber confiança total.

atributo habilitado

Value Description
false Não conceda confiança total a aplicativos de fontes remotas. Esse é o padrão.
true Conceda total confiança a aplicativos de fontes remotas.

Elementos filho

Nenhum.

Elementos pai

Elemento Description
configuration O elemento raiz em cada arquivo de configuração usado pelos aplicativos do Common Language Runtime e .NET Framework.
runtime Contém informações sobre opções de inicialização do runtime.

Observações

No .NET Framework 3.5 e versões anteriores, se você carregar um assembly de um local remoto, o código no assembly será executado em confiança parcial com um conjunto de concessões que depende da zona da qual ele é carregado. Por exemplo, se você carregar um assembly de um site, ele será carregado na zona da Internet e receberá o conjunto de permissões da Internet. Em outras palavras, ele é executado em uma área restrita da Internet.

A partir do .NET Framework 4, a política cas (segurança de acesso ao código) está desabilitada e os assemblies são carregados em total confiança. Normalmente, isso concederia total confiança a assemblies carregados com o Assembly.LoadFrom método que anteriormente havia sido em área restrita. Para evitar isso, a capacidade de executar código em assemblies carregados de uma fonte remota é desabilitada por padrão. Por padrão, se você tentar carregar um assembly remoto, uma FileLoadException mensagem com exceção como a seguinte será gerada:

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 carregar o assembly e executar seu código, você deve:

  • Crie explicitamente uma área restrita para o assembly (consulte Como executar código parcialmente confiável em uma área restrita).

  • Execute o código do assembly com total confiança. Você faz isso configurando o <loadFromRemoteSources> elemento. Ele permite que você especifique que os assemblies executados em confiança parcial em versões anteriores do .NET Framework agora são executados com total confiança no .NET Framework 4 e versões posteriores.

Importante

Se o assembly não deve ser executado com total confiança, não defina esse elemento de configuração. Em vez disso, crie uma área restrita AppDomain na qual carregar o assembly.

O enabled atributo para o elemento só é eficaz quando a <loadFromRemoteSources> CAS (segurança de acesso ao código) é desabilitada. Por padrão, a política cas é desabilitada no .NET Framework 4 e versões posteriores. Se você definir enabled como true, os assemblies remotos receberão total confiança.

Se enabled não estiver definido como true, um será lançado sob qualquer uma FileLoadException das seguintes condições:

  • O comportamento de área restrita do domínio atual é diferente de seu comportamento no .NET Framework 3.5. Isso requer que a política cas seja desabilitada e que o domínio atual não seja em área restrita.

  • O assembly que está sendo carregado não é da MyComputer zona.

Definir o <loadFromRemoteSources> elemento para true impedir que essa exceção seja gerada. Ele permite que você especifique que você não está contando com o common language runtime para proteger os assemblies carregados para segurança e que eles podem ser executados com total confiança.

Anotações

  • No .NET Framework 4.5 e versões posteriores, assemblies em compartilhamentos de rede locais (ou seja, a zona de segurança da Intranet local) são executados em total confiança por padrão; você não precisa habilitar o <loadFromRemoteSources> elemento. Para zonas de segurança diferentes de Máquina Local ou Intranet Local, defina o valor como true.

  • Se um aplicativo tiver sido copiado da Web, ele será sinalizado pelo Windows como sendo um aplicativo Web, mesmo que ele resida no computador local. Você pode alterar essa designação alterando suas propriedades de arquivo ou pode usar o <loadFromRemoteSources> elemento para conceder total confiança ao assembly. Como alternativa, você pode usar o UnsafeLoadFrom método para carregar um assembly local que o sistema operacional sinalizou como tendo sido carregado da Web.

  • Você pode obter um FileLoadException aplicativo em execução em um aplicativo de PC Virtual do Windows. Isso pode acontecer quando você tenta carregar um arquivo de pastas vinculadas no computador de hospedagem. Também pode ocorrer quando você tenta carregar um arquivo de uma pasta vinculada por Serviços de Área de Trabalho Remota (Serviços de Terminal). Para evitar a exceção, defina enabled como true.

Arquivo de configuração

Esse elemento normalmente é usado no arquivo de configuração do aplicativo, mas pode ser usado em outros arquivos de configuração, dependendo do contexto. Para obter mais informações, consulte o artigo Mais Usos Implícitos da Política cas: loadFromRemoteSources no blog de segurança do .NET.

Example

O exemplo a seguir mostra como conceder confiança total a assemblies carregados de fontes remotas.

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

Consulte também