<loadFromRemoteSources> komponent

Anger om sammansättningar som läses in från fjärrkällor ska beviljas fullständigt förtroende i .NET Framework 4 och senare.

Anmärkning

Om du omdirigerades till den här artikeln på grund av ett felmeddelande i Visual Studio-projektfellistan eller ett byggfel läser du Så här använder du en sammansättning från webben i Visual Studio.

<konfiguration>
   <Runtime>
     <loadFromRemoteSources>

Syntax

<loadFromRemoteSources
   enabled="true|false"/>

Attribut och element

I följande avsnitt beskrivs attribut, underordnade element och överordnade element.

Attributes

Attribute Description
enabled Obligatoriskt attribut.

Anger om en sammansättning som läses in från en fjärrkälla ska beviljas fullständigt förtroende.

aktiverat attribut

Värde Description
false Bevilja inte fullständigt förtroende för program från fjärranslutna källor. Det här är standardinställningen.
true Bevilja fullständigt förtroende till program från fjärranslutna källor.

Underordnade element

Ingen.

Överordnade element

Komponent Description
configuration Rotelementet i varje konfigurationsfil som används av vanliga språkkörnings- och .NET Framework-program.
runtime Innehåller information om initieringsalternativ för körning.

Anmärkningar

Om du läser in en sammansättning från en fjärrplats i .NET Framework 3.5 och tidigare versioner körs kod i sammansättningen delvis med en beviljandeuppsättning som är beroende av zonen som den läses in från. Om du till exempel läser in en sammansättning från en webbplats läses den in i zonen Internet och beviljas internetbehörighetsuppsättningen. Med andra ord körs den i en sandbox-miljö på Internet.

Från och med .NET Framework 4 inaktiveras kodåtkomstsäkerhetsprincipen (CAS) och sammansättningar läses in i fullständigt förtroende. Normalt skulle detta ge fullständigt förtroende till sammansättningar som lästs in med den Assembly.LoadFrom metod som tidigare hade begränsats. För att förhindra detta är möjligheten att köra kod i sammansättningar som lästs in från en fjärrkälla inaktiverad som standard. Om du försöker läsa in en fjärrsammansättning utlöses som standard ett FileLoadException undantagsmeddelande som följande:

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.

Om du vill läsa in sammansättningen och köra dess kod måste du antingen:

  • Skapa uttryckligen en sandbox-miljö för sammansättningen (se Så här kör du delvis betrodd kod i en sandbox-miljö).

  • Kör sammansättningens kod i fullständigt förtroende. Det gör du genom att konfigurera elementet <loadFromRemoteSources> . Du kan ange att de sammansättningar som körs i delvis förtroende i tidigare versioner av .NET Framework nu körs i fullständigt förtroende i .NET Framework 4- och senare versioner.

Viktigt!

Om sammansättningen inte ska köras i fullständigt förtroende ska du inte ange det här konfigurationselementet. Skapa i stället en sandbox-miljö AppDomain där du kan läsa in sammansättningen.

Attributet enabled för elementet <loadFromRemoteSources> gäller endast när kodåtkomstsäkerhet (CAS) är inaktiverat. Som standard är CAS-principen inaktiverad i .NET Framework 4 och senare versioner. Om du anger enabled till truebeviljas fjärrsammansättningar fullständigt förtroende.

Om enabled inte är inställt på truegenereras en FileLoadException under något av följande villkor:

  • Sandbox-beteendet för den aktuella domänen skiljer sig från dess beteende i .NET Framework 3.5. Detta kräver att CAS-principen inaktiveras och att den aktuella domänen inte är begränsat.

  • Sammansättningen som läses in kommer inte från MyComputer zonen.

Om du ställer in elementet <loadFromRemoteSources>true förhindras det här undantaget från att genereras. Det gör att du kan ange att du inte förlitar dig på den vanliga språkkörningen för att sandboxa de inlästa sammansättningarna för säkerhet och att de kan köras i fullständigt förtroende.

Noteringar

  • I .NET Framework 4.5 och senare versioner körs sammansättningar på lokala nätverksresurser (dvs. säkerhetszonen Lokalt intranät) i fullständigt förtroende som standard. du behöver inte aktivera elementet <loadFromRemoteSources> . För andra säkerhetszoner än lokal dator eller lokalt intranät anger du värdet till true.

  • Om ett program har kopierats från webben flaggas det av Windows som ett webbprogram, även om det finns på den lokala datorn. Du kan ändra den beteckningen genom att ändra dess filegenskaper, eller så kan du använda elementet <loadFromRemoteSources> för att ge sammansättningen fullständigt förtroende. Alternativt kan du använda UnsafeLoadFrom metoden för att läsa in en lokal sammansättning som operativsystemet har flaggat som inläst från webben.

  • Du kan få en FileLoadException i ett program som körs i ett Windows Virtual PC-program. Detta kan inträffa när du försöker läsa in en fil från länkade mappar på värddatorn. Det kan också inträffa när du försöker läsa in en fil från en mapp som är länkad via Fjärrskrivbordstjänster (Terminal Services). För att undvika undantaget anger du enabled till true.

Konfigurationsfil

Det här elementet används vanligtvis i programkonfigurationsfilen, men kan användas i andra konfigurationsfiler beroende på kontexten. Mer information finns i artikeln Mer implicit användning av CAS-princip: loadFromRemoteSources i .NET Security-bloggen.

Example

I följande exempel visas hur du beviljar fullständigt förtroende till sammansättningar som läses in från fjärrkällor.

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

Se även