从 .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>