Dela via


<loadFromRemoteSources-element>

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

Anteckning

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ända 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.

Attribut

Attribut Beskrivning
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 Beskrivning
false Bevilja inte fullständigt förtroende till 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

Inga.

Överordnade element

Element Beskrivning
configuration Rotelementet i varje konfigurationsfil som används av common language runtime och .NET Framework program.
runtime Innehåller information om initieringsalternativ för körning.

Kommentarer

Om du läser in en sammansättning från en fjärrplats i .NET Framework 3.5 och tidigare versioner körs koden 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 genereras som standard ett FileLoadException undantagsmeddelande som liknar 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 partiellt 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 med fullständigt förtroende ska du inte ange det här konfigurationselementet. Skapa i stället en sandbox-miljö där sammansättningen ska läsas AppDomain in.

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å trueutlöses 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 sandbox-miljön för de inlästa sammansättningarna för säkerhet och att de kan köras i fullständigt förtroende.

Kommentarer

  • 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). Om du vill 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.

Exempel

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

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

Se även