Wcf XmlReader是否在符号和实体后截断空白?

Wcf XmlReader是否在符号和实体后截断空白?,wcf,escaping,entity,xmlreader,Wcf,Escaping,Entity,Xmlreader,这很奇怪。我有一个WCF,我试图将正文的内容读入一个XmlDocument。消息体的内容在线路上看起来像这样(在打开WCF跟踪的情况下进行检查时): messageDoc中生成的XML如下所示: XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreWhitespace = false; settings.CheckCharacters = false; XmlReader bodyReader = XmlRea

这很奇怪。我有一个WCF,我试图将正文的内容读入一个XmlDocument。消息体的内容在线路上看起来像这样(在打开WCF跟踪的情况下进行检查时):

messageDoc
中生成的XML如下所示:

XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = false;
settings.CheckCharacters = false;
XmlReader bodyReader = XmlReader.Create(
        message.GetReaderAtBodyContents().ReadSubtree(), settings);
XmlDocument messageDoc = new XmlDocument();
messageDoc.Load(bodyReader);
<abc>
    <timeZone>(GMT-05:00) Eastern Time (US &Canada)</timeZone>
</abc>

(GMT-05:00)东部时间(美国和加拿大)

那么,原始
之后的额外空格在哪里
go?

您可以通过删除
XmlReader
来简化代码。然后在
XmlDocument
上设置保留空格。您可以将所有代码替换为:

XmlDocument messageDoc = new XmlDocument() { PreserveWhitespace = true };
messageDoc.Load(message.GetReaderAtBodyContents().ReadSubtree());

我无法复制你的问题;我的测试中保留了空格。
XmlDocument messageDoc = new XmlDocument() { PreserveWhitespace = true };
messageDoc.Load(message.GetReaderAtBodyContents().ReadSubtree());