缓解:使用 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 开头的 .NET Framework 版本的应用,这些控制字符的序列化与 ECMAScript V6 和 V8 兼容。 以下 API 受到影响:

缓解措施

对于针对 .NET Framework 4.7及以上版本的应用程序,该行为默认启用。

如果不需要此行为,可以通过将以下行添加到 app.config 或 web.config 文件的 <runtime> 部分来选择退出此功能:

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

另请参阅