4

我在消息检查器中有以下代码来检查响应正文。我知道 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 感到不舒服。什么是合理的尺寸?

4

1 回答 1

10

试试这个代码:

    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;
于 2012-04-23T16:10:09.827 回答