<Elemento loadFromRemoteSources>
Specifica se gli assembly caricati da origini remote devono essere concessi attendibilità completa in .NET Framework 4 e versioni successive.
Nota
Se questo articolo è stato indirizzato a causa di un messaggio di errore nell'elenco di errori del progetto di Visual Studio o in un errore di compilazione, vedere Procedura: Usare un assembly dal Web in Visual Studio.
<Configurazione>
<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 un assembly caricato da un'origine remota deve essere concesso un trust completo. |
attributo abilitato
Valore | Descrizione |
---|---|
false |
Non concedere l'attendibilità completa alle applicazioni da origini remote. Questo è il valore predefinito. |
true |
Concedere l'attendibilità completa 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 trust parziale con un set di concessione che dipende dalla zona da cui viene caricato. Ad esempio, se si carica un assembly da un sito Web, viene caricato nell'area Internet e 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 di accesso al codice sono disabilitati e gli assembly vengono caricati con attendibilità completa. In genere, questo concederebbe l'attendibilità completa agli assembly caricati con il Assembly.LoadFrom metodo precedentemente 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 FileLoadException generato un messaggio di eccezione 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 eseguire 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à completa. A tale scopo, configurare l'elemento
<loadFromRemoteSources>
. Consente di specificare che gli assembly eseguiti in attendibilità parziale nelle versioni precedenti di .NET Framework ora vengono eseguiti con attendibilità completa in .NET Framework 4 e versioni successive.
Importante
Se l'assembly non deve essere eseguito con attendibilità completa, non impostare questo elemento di configurazione. Creare invece una sandbox in AppDomain cui caricare l'assembly.
L'attributo enabled
per l'elemento è efficace solo quando la <loadFromRemoteSources>
sicurezza di accesso al codice (CAS) è disabilitata. Per impostazione predefinita, i criteri CAS sono disabilitati nelle versioni di .NET Framework 4 e versioni successive. Se si imposta enabled
su true
, gli assembly remoti vengono concessi attendibilità completa.
Se enabled
non è impostato su true
, viene FileLoadException generato in una delle seguenti condizioni:
Il comportamento di sandboxing del dominio corrente è diverso dal relativo comportamento in .NET Framework 3.5. Questo richiede che i criteri cas siano disabilitati e il dominio corrente non sia sandbox.
L'assembly
MyComputer
caricato non proviene dalla zona.
Impostando l'elemento per true
impedire che <loadFromRemoteSources>
venga generata questa eccezione. Consente di specificare che non si fa affidamento sul common language runtime per sandboxre gli assembly caricati per la sicurezza e che possono essere autorizzati a eseguire in modo completo.
Note
In .NET Framework 4.5 e versioni successive, gli assembly nelle condivisioni di rete locali (ovvero l'area di sicurezza Intranet locale) vengono eseguiti con attendibilità completa per impostazione predefinita; non è necessario abilitare l'elemento
<loadFromRemoteSources>
. Per le zone di sicurezza diverse da Computer locale o Intranet locale, impostare il valore sutrue
.Se un'applicazione è stata copiata dal Web, viene contrassegnata da Windows come applicazione Web, anche se si trova nel computer locale. È possibile modificare tale designazione modificando le proprietà del file oppure è possibile usare l'elemento per concedere l'attendibilità
<loadFromRemoteSources>
completa dell'assembly. In alternativa, è possibile usare il UnsafeLoadFrom metodo per caricare un assembly locale contrassegnato come caricato dal Web.È possibile ottenere un FileLoadException oggetto in un'applicazione in esecuzione in un'applicazione pc virtuale Windows. Ciò può verificarsi quando si tenta di caricare un file da cartelle collegate nel computer di hosting. Può verificarsi anche quando si tenta di caricare un file da una cartella collegata a Servizi Desktop remoto (Servizi terminal). Per evitare l'eccezione, impostare
enabled
sutrue
.
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 Altre usi impliciti dei criteri CAS: loadFromRemoteSources nel blog sulla sicurezza .NET.
Esempio
Nell'esempio seguente viene illustrato come concedere l'attendibilità completa agli assembly caricati da origini remote.
<configuration>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>