Delen via


<loadFromRemoteSources-element>

Hiermee geeft u op of assembly's die vanuit externe bronnen zijn geladen, volledig vertrouwen moeten worden verleend in .NET Framework 4 en hoger.

Notitie

Als u naar dit artikel bent omgeleid vanwege een foutbericht in de lijst met Visual Studio-projectfouten of een buildfout, raadpleegt u Procedure: Een assembly van het web gebruiken in Visual Studio.

<configuratie>
  <Runtime>
    <loadFromRemoteSources>

Syntax

<loadFromRemoteSources
   enabled="true|false"/>

Kenmerken en elementen

In de volgende secties worden kenmerken, onderliggende elementen en bovenliggende elementen beschreven.

Kenmerken

Kenmerk Beschrijving
enabled Vereist kenmerk.

Hiermee geeft u op of aan een assembly die wordt geladen vanuit een externe bron volledig vertrouwen moet worden verleend.

kenmerk ingeschakeld

Waarde Beschrijving
false Wijs toepassingen van externe bronnen geen volledig vertrouwen toe. Dit is de standaardinstelling.
true Volledig vertrouwen verlenen aan toepassingen van externe bronnen.

Onderliggende elementen

Geen.

Bovenliggende elementen

Element Beschrijving
configuration Het hoofdelement in elk configuratiebestand dat wordt gebruikt door de common language runtime en .NET Framework toepassingen.
runtime Bevat informatie over opties voor runtime-initialisatie.

Opmerkingen

Als u in de .NET Framework 3.5 en eerdere versies een assembly vanaf een externe locatie laadt, wordt code in de assembly gedeeltelijk vertrouwd uitgevoerd met een toekenningsset die afhankelijk is van de zone van waaruit de assembly wordt geladen. Als u bijvoorbeeld een assembly van een website laadt, wordt deze in de internetzone geladen en de internetmachtigingsset toegewezen. Met andere woorden, het wordt uitgevoerd in een internet-sandbox.

Vanaf de .NET Framework 4 wordt het beleid voor beveiliging van codetoegang (CAS) uitgeschakeld en worden assembly's in volledig vertrouwen geladen. Normaal gesproken verleent dit volledige vertrouwen aan assembly's die zijn geladen met de methode die eerder in de Assembly.LoadFrom sandbox was geplaatst. Om dit te voorkomen, is de mogelijkheid om code uit te voeren in assembly's die zijn geladen vanuit een externe bron standaard uitgeschakeld. Als u probeert een externe assembly te laden, wordt standaard een FileLoadException met een uitzonderingsbericht zoals het volgende gegenereerd:

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.

Als u de assembly wilt laden en de code wilt uitvoeren, moet u het volgende doen:

  • Maak expliciet een sandbox voor de assembly (zie Procedure: Gedeeltelijk vertrouwde code uitvoeren in een sandbox).

  • Voer de code van de assembly in volledig vertrouwen uit. U doet dit door het <loadFromRemoteSources> element te configureren. Hiermee kunt u opgeven dat de assembly's die gedeeltelijk worden vertrouwd in eerdere versies van de .NET Framework nu volledig vertrouwen worden uitgevoerd in de .NET Framework 4 en latere versies.

Belangrijk

Als de assembly niet in volledig vertrouwen moet worden uitgevoerd, stelt u dit configuratie-element niet in. Maak in plaats daarvan een sandbox waarin AppDomain u de assembly wilt laden.

Het enabled kenmerk voor het <loadFromRemoteSources> element is alleen van kracht wanneer codetoegangsbeveiliging (CAS) is uitgeschakeld. Cas-beleid is standaard uitgeschakeld in de .NET Framework 4 en latere versies. Als u instelt enabled op true, krijgen externe assembly's volledig vertrouwen.

Als enabled niet is ingesteld op true, wordt een FileLoadException gegenereerd onder een van de volgende voorwaarden:

  • Het sandbox-gedrag van het huidige domein verschilt van het gedrag in .NET Framework 3.5. Hiervoor moet CAS-beleid worden uitgeschakeld en het huidige domein moet niet in de sandbox worden geplaatst.

  • De assembly die wordt geladen, komt niet uit de MyComputer zone.

Als u het <loadFromRemoteSources> element instelt op, true voorkomt u dat deze uitzondering wordt gegenereerd. Hiermee kunt u opgeven dat u niet afhankelijk bent van de runtime voor de algemene taal om de geladen assembly's te sandboxen voor beveiliging en dat ze in volledig vertrouwen kunnen worden uitgevoerd.

Notities

  • In .NET Framework 4.5 en latere versies worden assembly's op lokale netwerkshares (dat wil gezegd, de beveiligingszone Lokaal intranet) standaard volledig vertrouwd uitgevoerd. U hoeft het <loadFromRemoteSources> element niet in te schakelen. Voor andere beveiligingszones dan Lokale computer of Lokaal intranet stelt u de waarde in op true.

  • Als een toepassing van internet is gekopieerd, wordt deze door Windows gemarkeerd als een webtoepassing, zelfs als deze zich op de lokale computer bevindt. U kunt deze aanduiding wijzigen door de bestandseigenschappen te wijzigen of u kunt het <loadFromRemoteSources> element gebruiken om de assembly volledig vertrouwen te verlenen. Als alternatief kunt u de UnsafeLoadFrom methode gebruiken om een lokale assembly te laden die door het besturingssysteem is gemarkeerd als geladen van internet.

  • Mogelijk krijgt u een FileLoadException in een toepassing die wordt uitgevoerd in een Windows Virtual PC-toepassing. Dit kan gebeuren wanneer u probeert een bestand te laden vanuit gekoppelde mappen op de hostcomputer. Het kan ook gebeuren wanneer u probeert een bestand te laden vanuit een map die is gekoppeld via Extern bureaublad-services (Terminal Services). Als u de uitzondering wilt voorkomen, stelt u in enabled op true.

Configuratiebestand

Dit element wordt meestal gebruikt in het configuratiebestand van de toepassing, maar kan worden gebruikt in andere configuratiebestanden, afhankelijk van de context. Zie het artikel More Implicit Uses of CAS Policy: loadFromRemoteSources (Meer impliciet gebruik van CAS-beleid: loadFromRemoteSources ) in de .NET Security-blog voor meer informatie.

Voorbeeld

In het volgende voorbeeld ziet u hoe u volledig vertrouwen verleent aan assembly's die zijn geladen vanuit externe bronnen.

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

Zie ook