الأعراض
لنفترض أنك قمت بالترقية إلى Microsoft .NET Framework 4.6 على جهاز الكمبيوتر الخاص بك. عند استخدام تطبيق يستخدم إطار عمل اتصالات Windows (WCF) لإرسال رسائل XML SOAP، قد يستغرق الترميز وقتا أطول قليلا. في بعض الحالات، قد يؤثر ذلك على معدل معالجة طلبات تطبيق الخادم.
السبب
تحدث هذه المشكلة بسبب برنامج برمجي جديد ل Just-In-Time (JIT) يسمى RyuJIT. يستخدم هذا المترجم تحسينات مختلفة عن المترجم JIT64 القديم. لم يتم تحسين طريقة على مسار التعليمات البرمجية الساخنة لترميز السلاسل في XmlDictionaryWriter لمترجم JIT الجديد وتعمل التعليمات الأصلية التي تم إنشاؤها بشكل أبطأ ويستغرق الترميز وقتا أطول. عندما تحتوي رسالة SOAP على عدد كبير من السلاسل المراد ترميزها ، يتم استخدام هذا الرمز الأبطأ بشكل متكرر وقد يؤثر على وقت الترميز.
الدقة
للتغلب على هذه المشكلة، قم بتكوين التطبيق لتعطيل استخدام ngen لتجميع System.Runtime.Serialization.dll واستخدام مشغل JIT القديم. للقيام بذلك، اتبع إحدى الطريقتين التاليتين:
عين متغيرات البيئة التالية:
COMPLUS_useLegacyJit=1
COMPLUS_DisableNativeImageLoadList=System.Runtime.Serializationفي السجل، قم بإنشاء أي مفتاح من المفاتيح الفرعية التالية:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework
HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFrameworkثم أضف القيم التالية:
- اسم المفتاح: useLegacyJit
النوع: REG_WORD
القيمة: 1 - اسم المفتاح: DisableNativeImageLoadList
النوع: REG_SZ
القيمة: System.Runtime.Serialization
- اسم المفتاح: useLegacyJit
قم بإضافة النص التالي إلى <ملف app>.exe.config. إنشاء المقاطع المشار إليها إذا لم تكن موجودة بالفعل.<التكوين>
<وقت التشغيل>
<useLegacyJit enabled="1">
<disableNativeImageLoad>
<assemblyIdentity name="System.Runtime.Serialization" />
</disableNativeImageLoad>
</وقت التشغيل>
</configuration>
لمزيد من المعلومات حول المشكلات المعروفة في .NET Framework 4.6، راجع المشكلات المعروفة ل .NET Framework 4.6.
المزيد من المعلومات
لمزيد من المعلومات حول تغييرات إصدار المنتج وتأثيراتها في .NET Framework 4.6، راجع توافق التطبيق في .NET Framework 4.6.