Устранение рисков: сериализация символов управления с помощью DataContractJsonSerializer
Начиная с .NET Framework 4.7, изменился способ сериализации управляющих символов с помощью DataContractJsonSerializer, чтобы соответствовать правилам ECMAScript версий 6 и 8.
Воздействие
В .NET Framework 4.6.2 и более ранних версиях объект DataContractJsonSerializer сериализовал некоторые специальные управляющие символы, например \b
, \f
и \t
, не так, как требуют стандарты ECMAScript версии 6 и версии 8.
Для приложений, предназначенных для версий платформы .NET Framework, начиная с .NET Framework 4.7, сериализация таких управляющих символов совместима с ECMAScript версий 6 и 8. Это касается следующих API-интерфейсов:
Исправление
Для приложений, предназначенных для версий платформы .NET Framework, начиная с .NET Framework 4.7, такое поведение включено по умолчанию.
Если оно нежелательно, данную функцию можно отключить, добавив следующую строку в раздел <runtime>
файла app.config или web.config:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Runtime.Serialization.DoNotUseECMAScriptV6EscapeControlCharacter=false" />
</runtime>