提问人:Andy W 提问时间:8/11/2023 更新时间:8/11/2023 访问量:30
WCF CreateMessage 在转义的 ASCII 字符上失败
WCF CreateMessage fails on escaped ASCII characters
问:
我正在将 WCF 客户端应用程序从 DotNet Framework 迁移到 DotNet (Core) 7。我使用的对象使用 ASCII 字符 0x07 作为分隔符进行序列化,在 DotNet 框架下,该分隔符将转义为 。
var request = new Request(...);
Message wcfMessage = Message.CreateMessage(MessageVersion.Soap12WSAddressing10, "MyServiceAction", request);
var wcfMessageXml = wcfMessage.ToString();
在 dotnet 框架下,这会导致类似于 <SerializedData>Field 1 的 WCF 正文字段 2等<SerializedData>。
但是,在 dotnet core 中使用相同的代码,我得到: System.ArgumentException : '\a',十六进制值 0x07,是一个无效字符。
我已经追踪到这样一个事实,即在最新的 dotnet 中,XmlReader、XmlWriter 和相关类将尝试取消转义文本中的任何转义序列,然后检查该字符是否为有效的 XML。如果我直接使用这些类,则可以使用 XmlReaderSetting/XmlWriterSettings.CheckCharacters = false 跳过此不良行为,但我无法弄清楚如何对 WCF Message 对象执行相同的操作。我怎样才能让它工作?
答: 暂无答案
评论
XmlWriterSettings xmlWriterSettings = new XmlWriterSettings { Encoding = Encoding.UTF8, CheckCharacters = false };
Regex.Replace