Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menentukan apakah rakitan yang dimuat dari sumber jarak jauh harus diberikan kepercayaan penuh pada .NET Framework 4 dan yang lebih baru.
Nota
Jika Anda diarahkan ke artikel ini karena pesan kesalahan di daftar kesalahan proyek Visual Studio atau kesalahan build, lihat Cara: Menggunakan Assembly dari Web di Visual Studio.
<configuration>
<runtime>
<loadFromRemoteSources>
Syntax
<loadFromRemoteSources
enabled="true|false"/>
Atribut dan elemen
Bagian berikut menjelaskan atribut, elemen turunan, dan elemen induk.
Attributes
| Attribute | Description |
|---|---|
enabled |
Atribut yang diperlukan. Menentukan apakah rakitan yang dimuat dari sumber jarak jauh harus diberikan kepercayaan penuh. |
atribut yang diaktifkan
| Nilai | Description |
|---|---|
false |
Jangan memberikan kepercayaan penuh kepada aplikasi dari sumber jarak jauh. Ini adalah default. |
true |
Berikan kepercayaan penuh kepada aplikasi dari sumber jarak jauh. |
Elemen turunan
Tidak ada.
Elemen induk
| Elemen | Description |
|---|---|
configuration |
Elemen akar di setiap file konfigurasi yang digunakan oleh runtime dan aplikasi .NET Framework. |
runtime |
Berisi informasi tentang opsi inisialisasi runtime. |
Komentar
Dalam .NET Framework 3.5 dan versi yang lebih lama, jika Anda memuat rakitan dari lokasi jarak jauh, kode di rakitan berjalan dalam kepercayaan parsial dengan set hibah yang bergantung pada zona tempatnya dimuat. Misalnya, jika Anda memuat rakitan dari situs web, itu dimuat ke zona Internet dan diberikan set izin Internet. Dengan kata lain, ini dijalankan dalam kotak pasir Internet.
Dimulai dengan kebijakan .NET Framework 4, keamanan akses kode (CAS) dinonaktifkan dan rakitan dimuat dalam kepercayaan penuh. Biasanya, ini akan memberikan kepercayaan penuh kepada rakitan yang dimuat dengan Assembly.LoadFrom metode yang sebelumnya telah dikotakpasir. 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, dengan FileLoadException pesan pengecualian seperti berikut ini dilemparkan:
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 kotak pasir secara eksplisit untuk rakitan (lihat Cara: Menjalankan Kode Tepercaya Sebagian di Kotak Pasir).
Jalankan kode assembly dengan kepercayaan penuh. Anda melakukan ini dengan mengonfigurasi
<loadFromRemoteSources>elemen . Ini memungkinkan Anda menentukan bahwa rakitan yang berjalan dalam kepercayaan parsial pada versi .NET Framework yang lebih lama sekarang berjalan dengan kepercayaan penuh pada .NET Framework 4 dan versi yang lebih baru.
Penting
Jika rakitan tidak boleh berjalan dengan kepercayaan penuh, jangan atur elemen konfigurasi ini. Sebagai gantinya, buat kotak AppDomain pasir untuk memuat rakitan.
Atribut enabled untuk <loadFromRemoteSources> elemen hanya efektif ketika 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, dilemparkan FileLoadException di bawah salah satu kondisi berikut:
Perilaku sandboxing domain saat ini berbeda dari perilakunya di .NET Framework 3.5. Ini mengharuskan kebijakan CAS dinonaktifkan, dan domain saat ini tidak dikotakpasir.
Assembly yang sedang dimuat bukan dari zona .
MyComputer
<loadFromRemoteSources> Mengatur elemen untuk true mencegah pengecualian ini dilemparkan. Ini memungkinkan Anda untuk menentukan bahwa Anda tidak mengandalkan runtime bahasa umum untuk sandbox rakitan yang dimuat untuk keamanan, dan bahwa mereka dapat diizinkan untuk mengeksekusi dengan kepercayaan penuh.
Catatan
Di .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 nilai ketrue.Jika aplikasi telah disalin dari web, aplikasi tersebut ditandai oleh Windows sebagai aplikasi web, meskipun berada di komputer lokal. Anda dapat mengubah penugasan tersebut dengan mengubah properti filenya, atau Anda dapat menggunakan
<loadFromRemoteSources>elemen untuk memberikan kepercayaan penuh perakitan. Sebagai alternatif, Anda dapat menggunakan UnsafeLoadFrom metode untuk memuat rakitan lokal yang telah ditandai 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 ketika Anda mencoba memuat file dari folder yang ditautkan melalui Layanan Desktop Jarak Jauh (Layanan Terminal). Untuk menghindari pengecualian, atur
enabledketrue.
File konfigurasi
Elemen ini biasanya digunakan dalam file konfigurasi aplikasi, tetapi dapat digunakan dalam file konfigurasi lain tergantung pada konteksnya. Untuk informasi selengkapnya, lihat artikel Penggunaan Kebijakan CAS Yang Lebih Implisit: loadFromRemoteSources di blog Keamanan .NET.
Example
Contoh berikut menunjukkan cara memberikan kepercayaan penuh kepada rakitan yang dimuat dari sumber jarak jauh.
<configuration>
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
</configuration>