缓解:使用 DataContractJsonSerializer 对控制字符进行序列化

自 .NET Framework 4.7 起,使用 DataContractJsonSerializer 对控制字符进行序列化的方式已更改为与 ECMAScript V6 和 V8 兼容。

影响

在 .NET Framework 4.6.2 及更低版本中,DataContractJsonSerializer 未按与 ECMAScript V6 和 V8 标准兼容的方式对一些特殊控制字符(如 \b\f\t)进行序列化。

对于定位 .NET Framework 4.7 及更高版本的应用程序,这些控制字符的序列化与 ECMAScript V6 和 V8 兼容。 以下 API 受到影响:

缓解

对于定位 .NET Framework 4.7 及更高版本的应用程序,此行为默认启用。

如果不需要此行为,可以在 app.config 或 web.config 文件的 <runtime> 部分中添加下面的代码行,从而选择禁用此功能:

<runtime>
   <AppContextSwitchOverrides value="Switch.System.Runtime.Serialization.DoNotUseECMAScriptV6EscapeControlCharacter=false" />
</runtime>

请参阅