Elemento <loadFromRemoteSources>

Specifica se agli assembly caricati da origini remote deve essere concessa l'attendibilità totale in .NET Framework 4 e versioni successive.

Nota

Se si è stati indirizzati a questo articolo a causa di un messaggio di errore nell'elenco degli errori del progetto Visual Studio o di un errore di compilazione, vedere Procedura: Usareun assembly dal Web in Visual Studio .

<configuration>
  <runtime>
    <loadFromRemoteSources>

Sintassi

<loadFromRemoteSources
   enabled="true|false"/>  

Attributi ed elementi

Nelle sezioni seguenti vengono descritti gli attributi, gli elementi figlio e gli elementi padre.

Attributi

Attributo Descrizione
enabled Attributo obbligatorio.

Specifica se a un assembly caricato da un'origine remota deve essere concessa l'attendibilità totale.

Attributo enabled

Valore Descrizione
false Non concedere l'attendibilità totale alle applicazioni da origini remote. Questo è il valore predefinito.
true Concedere l'attendibilità totale alle applicazioni da origini remote.

Elementi figlio

Nessuno.

Elementi padre

Elemento Descrizione
configuration Elemento radice in ciascun file di configurazione usato in Common Language Runtime e nelle applicazioni .NET Framework.
runtime Contiene informazioni sulle opzioni di inizializzazione in fase di esecuzione.

Commenti

In .NET Framework 3.5 e versioni precedenti, se si carica un assembly da un percorso remoto, il codice nell'assembly viene eseguito in attendibilità parziale con un set di concessioni che dipende dalla zona da cui viene caricato. Ad esempio, se si carica un assembly da un sito Web, questo viene caricato nell'area Internet e viene concesso il set di autorizzazioni Internet. In altre parole, viene eseguito in una sandbox Internet.

A partire da .NET Framework 4, i criteri di sicurezza dall'accesso di codice vengono disabilitati e gli assembly vengono caricati con attendibilità totale. In genere, in questo modo si concede l'attendibilità totale agli assembly caricati con il Assembly.LoadFrom metodo precedentemente creato nella sandbox. Per evitare questo problema, la possibilità di eseguire codice negli assembly caricati da un'origine remota è disabilitata per impostazione predefinita. Per impostazione predefinita, se si tenta di caricare un assembly remoto, viene generata un'eccezione con un messaggio FileLoadException simile al seguente:

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.

Per caricare l'assembly ed eseguirne il codice, è necessario:

  • Creare in modo esplicito una sandbox per l'assembly (vedere Procedura: Eseguire codice parzialmente attendibile in una sandbox).

  • Eseguire il codice dell'assembly con attendibilità totale. A tale scopo, configurare <loadFromRemoteSources> l'elemento . Consente di specificare che gli assembly eseguiti in attendibilità parziale nelle versioni precedenti del .NET Framework ora vengono eseguiti con attendibilità totale nel .NET Framework 4 e versioni successive.

Importante

Se l'assembly non deve essere eseguito con attendibilità totale, non impostare questo elemento di configurazione. Creare invece un oggetto sandbox in AppDomain cui caricare l'assembly.

enabledL'attributo per <loadFromRemoteSources> l'elemento è valido solo quando la sicurezza dall'accesso di codice è disabilitata. Per impostazione predefinita, i criteri di sicurezza dall'accesso di codice sono disabilitati .NET Framework 4 e versioni successive. Se si imposta enabled su , agli assembly remoti viene concessa true l'attendibilità totale.

Se enabled non è impostato su , viene generata un'eccezione in una delle condizioni true FileLoadException seguenti:

  • Il comportamento di sandboxing del dominio corrente è diverso dal comportamento in .NET Framework 3.5. A questo scopo, è necessario che i criteri di sicurezza dall'accesso di codice siano disabilitati e che il dominio corrente non sia in modalità sandbox.

  • L'assembly caricato non è dalla MyComputer zona.

<loadFromRemoteSources>L'impostazione true dell'elemento su impedisce la generazione di questa eccezione. Consente di specificare che Common Language Runtime non si basa per creare una sandbox degli assembly caricati per la sicurezza e che è possibile consentirne l'esecuzione con attendibilità totale.

Note

  • Nella versione .NET Framework 4.5 e versioni successive gli assembly nelle condivisioni di rete locali vengono eseguiti con attendibilità totale per impostazione predefinita. Non è necessario abilitare <loadFromRemoteSources> l'elemento .

  • Se un'applicazione è stata copiata dal Web, viene contrassegnata da Windows come applicazione Web, anche se risiede nel computer locale. È possibile modificare tale designazione modificandone le proprietà del file oppure è possibile usare l'elemento per concedere <loadFromRemoteSources> l'attendibilità totale all'assembly. In alternativa, è possibile usare il metodo per caricare un assembly locale contrassegnato dal sistema operativo come caricato UnsafeLoadFrom dal Web.

  • È possibile ottenere FileLoadException in un'applicazione in esecuzione in un'Windows Virtual PC. Questa operazione può verificarsi quando si tenta di caricare un file da cartelle collegate nel computer host. Può verificarsi anche quando si tenta di caricare un file da una cartella collegata tramite Servizi Desktop remoto (Servizi terminal). Per evitare l'eccezione, impostare enabled su true .

File di configurazione

Questo elemento viene in genere usato nel file di configurazione dell'applicazione, ma può essere usato in altri file di configurazione a seconda del contesto. Per altre informazioni, vedere l'articolo More Implicit Uses of CAS Policy: loadFromRemoteSources (Altri usi impliciti dei criteri di sicurezza dall'accesso di codice: loadFromRemoteSources) nel blog sulla sicurezza di .NET.

Esempio

Nell'esempio seguente viene illustrato come concedere l'attendibilità totale agli assembly caricati da origini remote.

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

Vedi anche