realn
realn

Reputation: 1742

How to read the System.ServiceModel.Message?

I came across this situation.

Main Function:

Message msg = Message.CreateMessage(MessageVersion.Default, "Process");
String xmlData ="<Name>Navin</Name>";
Byte[] ba = Encoding.ASCII.GetBytes(xmlData);
MemoryStream ms = new MemoryStream(ba);

XmlWriter xw = XmlWriter.Create(ms);

msg.WriteBody(xw);

readMessage(msg);

In readMessage(Message msg):

XmlDictionaryReader xdr = msg.GetReaderAtBodyContents();

WHen i do this i am getting this error. Unhandled Exception: System.InvalidOperationException: This message cannot suppo rt the operation because it has been written.

How to overcome this.

Waiting for response.

Thanks in advance.

Upvotes: 1

Views: 601

Answers (1)

Tim
Tim

Reputation: 28530

According to MSDN Message.GetReaderAtBodyContents Method, you can't access the message body once it's been read or written - it can only be accessed once. You need to use 'CreateBufferedCopy' to access a message multiple times.

I didn't find any examples in the MSDN documentation, but it looks like you'd need to create a MessageBuffer instance via Message.CreateBufferedCopy, and then you can use the MessageBuffer's CreateMessage method to gain access to the contents of the buffer.

See:

Message.CreateBufferedCopy Method

MessageBuffer Class

MessageBuffer.CreateMessage Method

Upvotes: 1

Related Questions