Bagikan melalui


Elemen <loadFromRemoteSources>

Menentukan apakah rakitan yang dimuat dari sumber jarak jauh harus diberikan kepercayaan penuh pada .NET Framework 4 dan yang lebih baru.

Catatan

Jika Anda diarahkan ke artikel ini karena pesan kesalahan dalam daftar kesalahan proyek Visual Studio atau kesalahan pembuatan, lihat Cara: Menggunakan Rakitan dari Web di Visual Studio.

<konfigurasi>
  <runtime>
    <loadFromRemoteSources>

Sintaks

<loadFromRemoteSources
   enabled="true|false"/>

Atribut dan elemen

Bagian berikut menjelaskan atribut, elemen turunan, dan elemen induk.

Atribut

Atribut Deskripsi
enabled Atribut yang diperlukan.

Menentukan apakah rakitan yang dimuat dari sumber jarak jauh harus diberikan kepercayaan penuh.

atribut yang diaktifkan

Nilai Deskripsi
false Jangan berikan kepercayaan penuh pada aplikasi dari sumber jarak jauh. Ini adalah default.
true Berikan kepercayaan penuh pada aplikasi dari sumber jarak jauh.

Elemen anak

Tidak ada.

Elemen induk

Elemen Deskripsi
configuration Elemen akar di setiap file konfigurasi yang digunakan oleh runtime bahasa umum dan aplikasi .NET Framework.
runtime Berisi informasi tentang opsi inisialisasi runtime bahasa umum.

Keterangan

Di .NET Framework 3.5 dan versi sebelumnya, jika Anda memuat rakitan dari lokasi jauh, kode di rakitan berjalan dalam kepercayaan parsial dengan set hibah yang bergantung pada zona tempat kode dimuat. Misalnya, jika Anda memuat rakitan dari situs web, rakitan tersebut dimuat ke zona Internet dan diberi izin Internet. Dengan kata lain, ini dijalankan di sandbox Internet.

Mulai dari .NET Framework 4, kebijakan keamanan akses kode (CAS) dinonaktifkan dan rakitan dimuat dengan kepercayaan penuh. Biasanya, ini akan memberikan kepercayaan penuh kepada rakitan yang dimuat dengan metode Assembly.LoadFrom yang sebelumnya telah di-sandbox. Untuk mencegah hal ini, kemampuan untuk menjalankan kode dalam rakitan yang dimuat dari sumber jarak jauh dinonaktifkan secara default. Secara default, jika Anda mencoba memuat rakitan jarak jauh, FileLoadException dengan pesan pengecualian seperti berikut akan ditampilkan:

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.

Untuk memuat rakitan dan menjalankan kodenya, Anda harus:

  • Buat sandbox secara eksplisit untuk rakitan (lihat Cara: Menjalankan Kode Tepercaya Parsial di Sandbox).

  • Jalankan kode rakitan dengan kepercayaan penuh. Anda melakukannya dengan mengonfigurasi elemen <loadFromRemoteSources>. Ini memungkinkan Anda menentukan bahwa rakitan yang berjalan dengan kepercayaan parsial di versi .NET Framework sebelumnya sekarang berjalan dengan kepercayaan penuh di .NET Framework 4 dan versi yang lebih baru.

Penting

Jika rakitan tidak berjalan dengan kepercayaan penuh, jangan atur elemen konfigurasi ini. Sebagai gantinya, buat AppDomain yang di-sandbox untuk memuat rakitan.

Atribut enabled untuk elemen <loadFromRemoteSources> hanya efektif jika keamanan akses kode (CAS) dinonaktifkan. Secara default, kebijakan CAS dinonaktifkan di .NET Framework 4 dan versi yang lebih baru. Jika Anda mengatur enabled ke true, rakitan jarak jauh diberikan kepercayaan penuh.

Jika enabled tidak diatur ke true, FileLoadException ditampilkan di bagian salah satu kondisi berikut:

  • Perilaku kotak pasir domain saat ini berbeda dari perilakunya di .NET Framework 3.5. Ini memerlukan kebijakan CAS untuk dinonaktifkan, dan domain saat ini tidak di-sandbox.

  • Rakitan yang dimuat bukan dari zona MyComputer.

Mengatur elemen <loadFromRemoteSources> ke true mencegah pengecualian ini ditampilkan. Pengaturan ini memungkinkan Anda menentukan bahwa Anda tidak bergantung pada runtime bahasa umum untuk sandbox rakitan yang dimuat untuk keamanan, dan bahwa mereka dapat diizinkan untuk dijalankan dengan kepercayaan penuh.

Catatan

  • Dalam .NET Framework 4.5 dan versi yang lebih baru, rakitan pada berbagi jaringan lokal (yaitu, zona keamanan Intranet Lokal) berjalan dengan kepercayaan penuh secara default; Anda tidak perlu mengaktifkan <loadFromRemoteSources> elemen. Untuk zona keamanan selain Komputer Lokal atau Intranet Lokal, atur nilainya ke true.

  • Jika aplikasi telah disalin dari web, aplikasi ditandai oleh Windows sebagai aplikasi web, bahkan jika aplikasi berada di komputer lokal. Anda dapat mengubah penunjukan tersebut dengan mengubah properti filenya, atau Anda dapat menggunakan elemen <loadFromRemoteSources> untuk memberikan kepercayaan penuh kepada rakitan. Sebagai alternatif, Anda dapat menggunakan metode UnsafeLoadFrom untuk memuat rakitan lokal yang ditandai oleh sistem operasi sebagai telah dimuat dari web.

  • Anda mungkin mendapatkan FileLoadException dalam aplikasi yang berjalan di aplikasi Windows Virtual PC. Ini dapat terjadi ketika Anda mencoba memuat file dari folder tertaut di komputer hosting. Ini juga dapat terjadi saat Anda mencoba memuat file dari folder yang ditautkan melalui Layanan Desktop Jarak Jauh (Layanan Terminal). Untuk menghindari pengecualian, atur enabled ke true.

File Konfigurasi

Elemen ini biasanya digunakan dalam file konfigurasi aplikasi, tetapi dapat digunakan di file konfigurasi lain tergantung pada konteksnya. Untuk informasi selengkapnya, lihat artikel Penggunaan Kebijakan CAS yang Lebih Implisit: loadFromRemoteSources di blog Keamanan .NET.

Contoh

Contoh berikut menunjukkan cara memberikan kepercayaan penuh ke rakitan yang dimuat dari sumber jarak jauh.

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

Lihat juga