<loadFromRemoteSources> , element
Określa, czy zestawy ładowane ze źródeł zdalnych powinny mieć pełne zaufanie do .NET Framework 4 i nowszych.
Uwaga
Jeśli został przekierowany do tego artykułu z powodu komunikatu o błędzie na liście błędów projektu programu Visual Studio lub błędu kompilacji, zobacz How to: Use an Assembly from the Web in Visual Studio (Instrukcje: używanie zestawu z sieci Web w programie Visual Studio).
<Konfiguracji>
<Środowiska wykonawczego>
<loadFromRemoteSources>
Składnia
<loadFromRemoteSources
enabled="true|false"/>
Atrybuty i elementy
W poniższych sekcjach opisano atrybuty, elementy podrzędne i elementy nadrzędne.
Atrybuty
Atrybut | Opis |
---|---|
enabled |
Atrybut wymagany. Określa, czy zestaw ładowany ze źródła zdalnego powinien mieć pełne zaufanie. |
włączony atrybut
Wartość | Opis |
---|---|
false |
Nie udzielaj pełnego zaufania aplikacjom ze źródeł zdalnych. Jest to opcja domyślna. |
true |
Udziel pełnego zaufania aplikacjom ze źródeł zdalnych. |
Elementy podrzędne
Brak.
Elementy nadrzędne
Element | Opis |
---|---|
configuration |
Element główny w każdym pliku konfiguracji używanym przez środowisko uruchomieniowe języka wspólnego i aplikacje programu .NET Framework. |
runtime |
Zawiera informacje dotyczące opcji inicjowania środowiska uruchomieniowego. |
Uwagi
W .NET Framework 3.5 i starszych wersjach, jeśli załadujesz zestaw z lokalizacji zdalnej, kod w zestawie jest uruchamiany w częściowym zaufaniu z zestawem dotacji, który zależy od strefy, z której jest ładowany. Jeśli na przykład załadujesz zestaw z witryny internetowej, zostanie załadowany do strefy internetowej i udzielono zestawu uprawnień internetowych. Innymi słowy, jest wykonywana w piaskownicy internetowej.
Począwszy od .NET Framework 4, zasady zabezpieczeń dostępu do kodu (CAS) są wyłączone, a zestawy są ładowane w pełnym zaufaniu. Zwykle daje to pełne zaufanie do zestawów załadowanych Assembly.LoadFrom przy użyciu metody, która została wcześniej w trybie piaskownicy. Aby temu zapobiec, możliwość uruchamiania kodu w zestawach załadowanych ze źródła zdalnego jest domyślnie wyłączona. Domyślnie w przypadku próby załadowania zestawu FileLoadException zdalnego zostanie zgłoszony komunikat z wyjątkiem, taki jak poniżej:
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.
Aby załadować zestaw i wykonać jego kod, należy wykonać jedną z następujących czynności:
Jawnie utwórz piaskownicę zestawu (zobacz Instrukcje: uruchamianie częściowo zaufanego kodu w piaskownicy).
Uruchom kod zestawu w pełnym zaufaniu. W tym celu należy skonfigurować
<loadFromRemoteSources>
element. Pozwala określić, że zestawy uruchamiane w częściowej relacji zaufania we wcześniejszych wersjach .NET Framework są teraz uruchamiane w pełnym zaufaniu w .NET Framework 4 i nowszych wersjach.
Ważne
Jeśli zestaw nie powinien działać w pełnym zaufaniu, nie należy ustawiać tego elementu konfiguracji. Zamiast tego utwórz piaskownicę AppDomain , w której można załadować zestaw.
Atrybut enabled
elementu <loadFromRemoteSources>
jest skuteczny tylko wtedy, gdy zabezpieczenia dostępu do kodu (CAS) są wyłączone. Domyślnie zasady CAS są wyłączone w .NET Framework 4 i nowszych wersjach. Jeśli ustawiono wartość enabled
true
, zestawy zdalne mają pełne zaufanie.
Jeśli enabled
wartość nie jest ustawiona na true
wartość , FileLoadException element jest zgłaszany w ramach jednego z następujących warunków:
Zachowanie piaskownicy bieżącej domeny różni się od jego zachowania w .NET Framework 3.5. Wymaga to wyłączenia zasad CAS, a bieżąca domena nie jest w trybie piaskownicy.
Ładowany zestaw nie pochodzi ze
MyComputer
strefy.
<loadFromRemoteSources>
Ustawienie elementu w celu true
uniemożliwienia zgłaszania tego wyjątku. Umożliwia określenie, że nie polegasz na środowisku uruchomieniowym języka wspólnego do piaskownicy załadowanych zestawów na potrzeby zabezpieczeń i że mogą być one dozwolone do wykonania w pełnym zaufaniu.
Uwagi
W .NET Framework wersji 4.5 i nowszych zestawy w lokalnych udziałach sieciowych (czyli lokalnej strefie zabezpieczeń intranetu) są domyślnie uruchamiane w pełnym zaufaniu; nie trzeba włączać
<loadFromRemoteSources>
elementu. W przypadku stref zabezpieczeń innych niż Komputer lokalny lub Lokalny intranet ustaw wartośćtrue
na .Jeśli aplikacja została skopiowana z internetu, jest oflagowana przez system Windows jako aplikacja internetowa, nawet jeśli znajduje się na komputerze lokalnym. To oznaczenie można zmienić, zmieniając jego właściwości pliku lub używając
<loadFromRemoteSources>
elementu w celu udzielenia pełnego zaufania zestawu. Alternatywnie można użyć UnsafeLoadFrom metody , aby załadować zestaw lokalny, który system operacyjny oznaczył jako załadowany z Internetu.Możesz uzyskać aplikację FileLoadException działającą w aplikacji windows Virtual PC. Może się to zdarzyć podczas próby załadowania pliku z folderów połączonych na komputerze hostingu. Może również wystąpić podczas próby załadowania pliku z folderu połączonego za pośrednictwem usług pulpitu zdalnego (usług terminalowych ). Aby uniknąć wyjątku, ustaw wartość
enabled
true
.
Plik konfiguracji
Ten element jest zwykle używany w pliku konfiguracji aplikacji, ale może być używany w innych plikach konfiguracji w zależności od kontekstu. Aby uzyskać więcej informacji, zobacz artykuł Więcej niejawnych zastosowań zasad CAS: loadFromRemoteSources w blogu Dotyczącym zabezpieczeń platformy .NET.
Przykład
W poniższym przykładzie pokazano, jak udzielić pełnego zaufania zestawom załadowanym ze źródeł zdalnych.
<configuration>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>