4

応答本文を調べるために、メッセージインスペクターに次のコードがあります。WCFメッセージは1回しか読み取れないことを理解しているので、最初にコピーを作成します。しかし、次のコードでも、「このメッセージは読み取られたため、操作をサポートできません。」というエラーが表示されます...何かが足りませんか?

        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 に答える