Partilhar via


<loadFromRemoteSources element (elemento loadFromRemoteSources> )

Especifica se as assemblagens carregadas a partir de origens remotas devem ter total confiança no .NET Framework 4 e posterior.

Nota

Se 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 compilação, consulte Como: Utilizar uma Assemblagem da Web no Visual Studio.

<configuração>
  <runtime>
    <loadFromRemoteSources>

Syntax

<loadFromRemoteSources
   enabled="true|false"/>

Atributos e elementos

As secções seguintes descrevem atributos, elementos subordinados e elementos principais.

Atributos

Atributo Descrição
enabled Atributo obrigatório.

Especifica se deve ser concedida total confiança a uma assemblagem carregada a partir de uma origem remota.

atributo ativado

Valor Descrição
false Não conceda confiança total a aplicações de origens remotas. Esta é a predefinição.
true Conceda total confiança às aplicações de origens remotas.

Elementos subordinados

Nenhum.

Elementos principais

Elemento Descrição
configuration O elemento raiz em todos os ficheiros de configuração utilizados pelo runtime de idioma comum e .NET Framework aplicações.
runtime Contém informações sobre as opções de inicialização do runtime.

Observações

No .NET Framework 3.5 e versões anteriores, se carregar uma assemblagem a partir de uma localização remota, o código na assemblagem é executado em confiança parcial com um conjunto de concessões que depende da zona a partir da qual é carregada. Por exemplo, se carregar uma assemblagem a partir de um site, esta é carregada para a zona da Internet e é-lhe concedida a permissão definida pela Internet. Por outras palavras, é executado num sandbox da Internet.

A partir da .NET Framework 4, a política de segurança de acesso ao código (CAS) está desativada e as assemblagens são carregadas em total confiança. Normalmente, isto daria total confiança às assemblagens carregadas com o Assembly.LoadFrom método que anteriormente tinha sido sandboxed. Para evitar esta situação, a capacidade de executar código em assemblagens carregadas a partir de uma origem remota está desativada por predefinição. Por predefinição, se tentar carregar uma assemblagem remota, é emitida uma FileLoadException mensagem com uma exceção como a seguinte:

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 a assemblagem e executar o respetivo código, tem de:

  • Crie explicitamente um sandbox para a assemblagem (veja Como: Executar Código Parcialmente Fidedigno num Sandbox).

  • Execute o código da assemblagem em total confiança. Pode fazê-lo ao configurar o <loadFromRemoteSources> elemento. Permite-lhe especificar que as assemblagens que são executadas em confiança parcial em versões anteriores do .NET Framework agora são executadas em total confiança no .NET Framework 4 e versões posteriores.

Importante

Se a assemblagem não for executada em total confiança, não defina este elemento de configuração. Em vez disso, crie um sandbox no AppDomain qual carregar a assemblagem.

O enabled atributo para o <loadFromRemoteSources> elemento só é eficaz quando a segurança de acesso ao código (CAS) está desativada. Por predefinição, a política CAS está desativada nas versões .NET Framework 4 e posteriores. Se definir enabled como , é concedida confiança total às trueassemblagens remotas.

Se enabled não estiver definido como true, é emitido um FileLoadException sob uma das seguintes condições:

  • O comportamento do sandboxing do domínio atual é diferente do seu comportamento no .NET Framework 3.5. Isto requer que a política CAS seja desativada e que o domínio atual não seja em sandbox.

  • A assemblagem que está a ser carregada não é da MyComputer zona.

Definir o <loadFromRemoteSources> elemento para true impedir que esta exceção seja emitida. Permite-lhe especificar que não depende do runtime de linguagem comum para colocar em sandbox as assemblagens carregadas por segurança e que podem ser executadas em total confiança.

Notas

  • No .NET Framework versões 4.5 e posteriores, as assemblagens em partilhas de rede local (ou seja, a zona de segurança da Intranet Local) são executadas em total confiança por predefinição; não tem de ativar o <loadFromRemoteSources> elemento. Para zonas de segurança que não a Máquina Local ou a Intranet Local, defina o valor como true.

  • Se uma aplicação tiver sido copiada da Web, esta é sinalizada pelo Windows como sendo uma aplicação Web, mesmo que resida no computador local. Pode alterar essa designação alterando as respetivas propriedades de ficheiro ou pode utilizar o <loadFromRemoteSources> elemento para conceder a confiança total da assemblagem. Como alternativa, pode utilizar o UnsafeLoadFrom método para carregar uma assemblagem local que o sistema operativo sinalizou como tendo sido carregada a partir da Web.

  • Poderá obter uma numa FileLoadException aplicação que esteja em execução numa aplicação de PC Virtual do Windows. Isto pode acontecer quando tenta carregar um ficheiro a partir de pastas ligadas no computador de alojamento. Também pode ocorrer quando tenta carregar um ficheiro a partir de uma pasta ligada através dos Serviços de Ambiente de Trabalho Remoto (Serviços de Terminal). Para evitar a exceção, defina enabled como true.

Ficheiro de configuração

Normalmente, este elemento é utilizado no ficheiro de configuração da aplicação, mas pode ser utilizado noutros ficheiros de configuração consoante o contexto. Para obter mais informações, veja o artigo Mais Utilizações Implícitas da Política CAS: loadFromRemoteSources no blogue .NET Security.

Exemplo

O exemplo seguinte mostra como conceder confiança total a assemblagens carregadas a partir de origens remotas.

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

Ver também