3
我在消息檢查器中檢查響應正文中包含以下代碼。我知道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;
此外,我不覺得在那裏使用Int23.MaxValue舒適。什麼是合理的尺寸?
謝謝!有效!你能解釋一下這個區別嗎? – Laguna 2012-04-23 17:14:50
'message'變量通過引用傳遞到您的代碼中,幷包含WCF將使用的消息。它不能處於「已讀」狀態,以便WCF使用有效。但是,您可以多次調用'buffer.CreateMessage()'來創建WCF正在處理的實際消息的克隆。如果您想在現有消息中注入某些內容,則可以從舊消息中創建一條新消息,並將修改後的消息傳回給WCF。 – 2012-04-23 17:22:08