缓解:使用 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>