2011-11-13 48 views
1

我遇到了這種情況。如何讀取System.ServiceModel.Message?

主要功能:

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); 

在readMessage(信息MSG):

XmlDictionaryReader xdr = msg.GetReaderAtBodyContents(); 

,當我做到這一點我得到這個錯誤。 未處理的異常:System.InvalidOperationException:由於該消息已被寫入,因此該消息不能支持該操作。

如何克服這一點。

等待迴應。

在此先感謝。

回答

1

根據MSDN Message.GetReaderAtBodyContents Method,一旦讀取或寫入郵件正文,您將無法訪問它 - 它只能訪問一次。您需要使用'CreateBufferedCopy'多次訪問消息。

我在MSDN文檔中找不到任何示例,但看起來您需要通過Message.CreateBufferedCopy創建MessageBuffer實例,然後可以使用MessageBuffer的CreateMessage方法獲取對緩衝區。

參見:

Message.CreateBufferedCopy Method

MessageBuffer Class

MessageBuffer.CreateMessage Method