创建 WCF 消息的缓冲副本

本文关键字:缓冲 副本 消息 WCF 创建 | 更新日期: 2023-09-27 18:32:04

我在消息检查器中有以下代码来检查响应正文。我知道 WCF 消息只能读取一次,因此我先创建一个副本。但是使用以下代码,我仍然收到错误"此消息无法支持该操作,因为它已被读取"。...我错过了什么吗?

        MessageBuffer buffer = message.CreateBufferedCopy(Int32.MaxValue);
        Message copy = buffer.CreateMessage();
        message = copy;
        XmlDictionaryReader bodyReader = copy.GetReaderAtBodyContents();
        bodyReader.ReadStartElement("Binary");
        byte[] bodyBytes = bodyReader.ReadContentAsBase64();
        string messageBody = Encoding.UTF8.GetString(bodyBytes);
        return messageBody;

我也觉得在那里使用 Int23.MaxValue 不舒服。什么是合理的尺寸?

创建 WCF 消息的缓冲副本

试试这段代码:

    MessageBuffer buffer = message.CreateBufferedCopy(Int32.MaxValue);
    message = buffer.CreateMessage();
    var copy = buffer.CreateMessage();
    XmlDictionaryReader bodyReader = copy.GetReaderAtBodyContents();
    bodyReader.ReadStartElement("Binary");
    byte[] bodyBytes = bodyReader.ReadContentAsBase64();
    string messageBody = Encoding.UTF8.GetString(bodyBytes);
    return messageBody;