WCF Message.ToString()方法如何工作?

TCC*_*TCC 4 .net wcf message tostring

所有方法System.ServiceModel.Channels.Message只允许您读取消息体一次,如果在读取消息后调用则失败并返回异常.msdn文档确认只能读取消息正文.但是,如果你打电话ToString()给已经读过的信息,你似乎可以找回整个肥皂信封,身体和所有信息.

所以在我的情况下,即使只有方法允许,它似乎也可以访问身体.

这里有什么我想念的吗?ToString()在某些情况下使用是否可以使身体不可靠?

就我而言,我正在为一些WCF操作进行一些错误记录,并从中获取原始消息OperationContext.RequestContext.RequestMessage.我正在记录消息ToString()因为这是我能够找到的唯一方法来允许我记录消息正文.

car*_*ira 8

ToString 可能会打印邮件正文,但这不能保证.有许多类型的Message对象(它是一个抽象类).它们中的一些缓冲整个身体,而其他人只有一个前向读取器.缓冲消息的消息实现可以ToString调用时写入正文,这就是您所看到的内容.但是并不能保证所有消息类型.在许多情况下,当ToString被调用时,身体被简单地写成"... stream ..." .