创建WCF消息的缓冲副本

Lag*_*una 4 .net c# wcf

我在消息检查器中有以下代码来检查响应正文.我知道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;
Run Code Online (Sandbox Code Playgroud)

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

Six*_*aez 9

试试这段代码:

    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;
Run Code Online (Sandbox Code Playgroud)