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.
Nota
Artikel ini khusus untuk .NET Framework. Ini tidak berlaku untuk implementasi .NET yang lebih baru, termasuk .NET 6 dan versi yang lebih baru.
Asisten loadFromContext penelusuran kesalahan terkelola (MDA) diaktifkan jika rakitan dimuat ke dalam LoadFrom konteks. Situasi ini dapat terjadi sebagai akibat dari panggilan Assembly.LoadFrom atau metode serupa lainnya.
Gejala
Penggunaan beberapa metode pemuat dapat mengakibatkan rakitan dimuat dalam LoadFrom konteks. Penggunaan konteks ini dapat mengakibatkan perilaku tak terduga untuk serialisasi, transmisi, dan resolusi dependensi. Secara umum, disarankan agar rakitan dimuat ke dalam Load konteks untuk menghindari masalah ini. Sulit untuk menentukan konteks mana yang telah dimuat assembly tanpa MDA ini.
Penyebab
Umumnya, rakitan dimuat ke dalam LoadFrom konteks jika dimuat dari jalur di luar Load konteks, seperti cache rakitan global atau AppDomainSetup.ApplicationBase properti .
Resolution
Mengonfigurasi aplikasi singa agar LoadFrom panggilan tidak lagi diperlukan. Anda dapat menggunakan teknik berikut untuk melakukannya:
Pasang rakitan di cache rakitan global.
Tempatkan rakitan di ApplicationBase direktori untuk AppDomain. Dalam kasus domain default, ApplicationBase direktori adalah direktori yang berisi file yang dapat dieksekusi yang memulai proses. Ini mungkin juga memerlukan pembuatan baru AppDomain jika tidak nyaman untuk memindahkan assembly.
Tambahkan jalur pemeriksaan ke file konfigurasi aplikasi Anda (.config) atau ke domain aplikasi sekunder jika rakitan dependen berada di direktori anak relatif terhadap yang dapat dieksekusi.
Dalam setiap kasus, kode dapat diubah untuk menggunakan Assembly.Load metode .
Efek pada Runtime
MDA tidak memiliki efek apa pun pada CLR. Ini melaporkan konteks yang digunakan sebagai akibat dari permintaan beban.
Hasil
MDA melaporkan bahwa rakitan dimuat ke dalam LoadFrom konteks. Ini menentukan nama sederhana rakitan dan jalur. Ini juga menyarankan mitigasi untuk menghindari penggunaan LoadFrom konteks.
Konfigurasi
<mdaConfig>
<assistants>
<loadFromContext />
</assistants>
</mdaConfig>
Example
Contoh kode berikut menunjukkan situasi yang dapat mengaktifkan MDA ini:
using System.Reflection;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// The following call caused the LoadFrom context to be used
// because the assembly is loaded using LoadFrom and the path is
// located outside of the Load context probing path.
Assembly.LoadFrom(@"C:\Text\Test.dll");
}
}
}