<loadFromRemoteSources>-Element

Mit diesem Element wird angegeben, ob Assemblys, die aus Remotequellen geladen werden, in .NET Framework 4 und höher volle Vertrauenswürdigkeit gewährt werden soll.

Hinweis

Wenn Sie aufgrund einer Fehlermeldung in der Visual Studio-Projektfehlerliste oder eines Buildfehlers zu diesem Artikel weitergeleitet wurden, lesen Sie die Informationen unter Gewusst wie: Verwenden einer Assembly aus dem Internet in Visual Studio.

<configuration>
  <runtime>
    <loadFromRemoteSources>

Syntax

<loadFromRemoteSources
   enabled="true|false"/>

Attribute und Elemente

In den folgenden Abschnitten werden Attribute sowie untergeordnete und übergeordnete Elemente beschrieben.

Attribute

attribute Beschreibung
enabled Erforderliches Attribut.

Gibt an, ob einer Assembly, die aus einer Remotequelle geladen wird, volle Vertrauenswürdigkeit gewährt werden soll.

enabled-Attribut

Wert BESCHREIBUNG
false Gewähren Sie Anwendungen aus Remotequellen keine volle Vertrauenswürdigkeit. Dies ist die Standardoption.
true Gewähren Sie Anwendungen aus Remotequellen volle Vertrauenswürdigkeit.

Untergeordnete Elemente

Keine

Übergeordnete Elemente

Element BESCHREIBUNG
configuration Das Stammelement in jeder von den Common Language Runtime- und .NET Framework-Anwendungen verwendeten Konfigurationsdatei.
runtime Enthält Informationen über Laufzeitinitialisierungsoptionen.

Bemerkungen

Wenn Sie in .NET Framework 3.5 und früheren Versionen eine Assembly aus einem Remotespeicherort laden, wird der Code in der Assembly mit teilweiser Vertrauenswürdigkeit mit einem Berechtigungssatz ausgeführt, der von der Zone abhängt, aus der er geladen wird. Wenn Sie beispielsweise eine Assembly von einer Website laden, wird sie in die Internetzone geladen und ihr wird der Internetberechtigungssatz gewährt. Anders ausgedrückt: Sie wird in einer Internet-Sandbox ausgeführt.

Ab .NET Framework 4 ist die CAS-Richtlinie (Code Access Security, Codezugriffssicherheit) deaktiviert, und Assemblys werden mit voller Vertrauenswürdigkeit geladen. Normalerweise würde Assemblys, die mit der Methode Assembly.LoadFrom geladen wurden, die zuvor in einer Sandbox verwendet wurde, volle Vertrauenswürdigkeit gewährt. Um dies zu verhindern, ist die Möglichkeit zum Ausführen von Code in Assemblys, die aus einer Remotequelle geladen werden, standardmäßig deaktiviert. Wenn Sie versuchen, eine Remoteassembly zu laden, wird standardmäßig FileLoadException mit einer Ausnahmemeldung wie der folgenden ausgelöst:

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.

Um die Assembly zu laden und ihren Code auszuführen, müssen Sie einen der folgenden Schritte ausführen:

  • Erstellen Sie explizit eine Sandbox für die Assembly (siehe Gewusst wie: Ausführen von teilweise vertrauenswürdigem Code in einer Sandbox).

  • Führen Sie den Code der Assembly mit voller Vertrauenswürdigkeit aus. Dazu konfigurieren Sie das <loadFromRemoteSources>-Element. Damit können Sie angeben, dass die Assemblys, die in früheren Versionen von .NET Framework mit teilweiser Vertrauenswürdigkeit ausgeführt wurden, jetzt in .NET Framework 4 und höheren Versionen mit voller Vertrauenswürdigkeit ausgeführt werden.

Wichtig

Wenn die Assembly nicht mit voller Vertrauenswürdigkeit ausgeführt werden soll, legen Sie dieses Konfigurationselement nicht fest. Erstellen Sie stattdessen ein AppDomain-Sandboxelement, in das die Assembly geladen werden soll.

Das Attribut enabled für das <loadFromRemoteSources>-Element ist nur wirksam, wenn die Codezugriffssicherheit (Code Access Security, CAS) deaktiviert ist. Die CAS-Richtlinie ist in .NET Framework 4 und höheren Versionen standardmäßig deaktiviert. Wenn Sie enabled auf true festlegen, wird Remoteassemblys volle Vertrauenswürdigkeit gewährt.

Wenn enabled nicht auf true festgelegt ist, wird unter einer der folgenden Bedingungen FileLoadException ausgelöst:

  • Das Sandboxverhalten der aktuellen Domäne unterscheidet sich von ihrem Verhalten in .NET Framework 3.5. Dazu muss die CAS-Richtlinie deaktiviert sein, und die aktuelle Domäne darf nicht als Sandbox ausgeführt werden.

  • Die Assembly, die geladen wird, stammt nicht aus der Zone MyComputer.

Durch Festlegen des <loadFromRemoteSources>-Elements auf true wird verhindert, dass diese Ausnahme ausgelöst wird. Sie können angeben, dass Sie sich aus Sicherheitsgründen nicht auf die Common Language Runtime verlassen, um die geladenen Sandboxassemblys zu erstellen, und dass sie mit voller Vertrauenswürdigkeit ausgeführt werden können.

Notizen

  • In .NET Framework 4.5 und höheren Versionen werden Assemblys auf lokalen Netzwerkfreigaben (d. h. in der Sicherheitszone „Lokales Intranet“) standardmäßig mit voller Vertrauenswürdigkeit ausgeführt. Sie müssen das <loadFromRemoteSources>-Element nicht aktivieren. Legen Sie für andere Sicherheitszonen als „Lokaler Computer“ oder „Lokales Intranet“ den Wert auf true fest.

  • Wenn eine Anwendung aus dem Internet kopiert wurde, wird sie von Windows als Webanwendung gekennzeichnet, auch wenn sie sich auf dem lokalen Computer befindet. Sie können diese Bezeichnung ändern, indem Sie die Dateieigenschaften ändern, oder Sie können das <loadFromRemoteSources>-Element verwenden, um der Assembly volle Vertrauenswürdigkeit zu gewähren. Alternativ können Sie die UnsafeLoadFrom-Methode verwenden, um eine lokale Assembly zu laden, die vom Betriebssystem als aus dem Web geladen gekennzeichnet wurde.

  • Möglicherweise wird FileLoadException in einer Anwendung angezeigt, die in einer Windows Virtual PC-Anwendung ausgeführt wird. Dies kann passieren, wenn Sie versuchen, eine Datei aus verknüpften Ordnern auf dem Hostcomputer zu laden. Diese Ausnahme kann auch auftreten, wenn Sie versuchen, eine Datei aus einem Ordner zu laden, der über Remotedesktopdienste (Terminaldienste) verknüpft ist. Um die Ausnahme zu vermeiden, legen Sie enabled auf true fest.

Konfigurationsdatei

Dieses Element wird in der Regel in der Anwendungskonfigurationsdatei verwendet, kann aber je nach Kontext auch in anderen Konfigurationsdateien verwendet werden. Weitere Informationen finden Sie im .NET-Sicherheitsblog im Artikel More Implicit Uses of CAS Policy: loadFromRemoteSources (Weitere implizite Verwendungen der CAS-Richtlinie: loadFromRemoteSources).

Beispiel

Das folgende Beispiel zeigt, wie Assemblys, die aus Remotequellen geladen werden, volle Vertrauenswürdigkeit gewährt wird.

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

Siehe auch