Проблема
Предположим, что на вашем компьютере выполнено обновление до Microsoft платформа .NET Framework 4.6. При использовании приложения, использующего Windows Communication Framework (WCF) для отправки сообщений XML SOAP, кодирование может занимать немного больше времени. В некоторых случаях это может повлиять на скорость обработки запросов серверным приложением.
Причина
Эта проблема возникает из-за нового 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
Добавьте в файл приложения> следующий текст<. exe.config . Создайте указанные разделы, если их еще нет.<Конфигурация>
<среда выполнения>
<useLegacyJit enabled="1">
<disableNativeImageLoad>
<assemblyIdentity name="System.Runtime.Serialization" />
</disableNativeImageLoad>
</runtime>
</конфигурация>
Дополнительные сведения об известных проблемах в .NET Framework 4.6 см. в разделе «Известные проблемы в .NET Framework 4.6».
Дополнительные сведения
Дополнительные сведения об изменениях в управлении версиями продуктов и их влиянии на .NET Framework 4.6 см. в статье Совместимость приложений в .NET Framework 4.6.