Устранение рисков: сериализация символов управления с помощью 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>

См. также