0
我有修改WCF消息下面的遺留代碼:修改WCF消息體
private void ModifyReceivedRequest(ref Message message)
{
MemoryStream ms = new MemoryStream();
Encoding encoding = Encoding.UTF8;
XmlWriterSettings writerSettings = new XmlWriterSettings { Encoding = encoding };
writerSettings.ConformanceLevel = ConformanceLevel.Fragment;
writerSettings.Indent = true;
XmlDictionaryWriter writer = XmlDictionaryWriter.CreateDictionaryWriter(XmlWriter.Create(ms, writerSettings));
message.WriteBodyContents(writer);
writer.Flush();
var array = ms.ToArray(); // 56896306 size
string messageBodyString = encoding.GetString(array);
// change the message body
messageBodyString = messageBodyString.Replace("</applicationStructureData>", "</applicationStructureData><srcDataArray>");
messageBodyString = messageBodyString.Replace("</applicationData>", "</srcDataArray></applicationData>");
ms = new MemoryStream(encoding.GetBytes(messageBodyString));
XmlReader bodyReader = XmlReader.Create(ms);
Message originalMessage = message;
message = Message.CreateMessage(originalMessage.Version, null, bodyReader);
message.Headers.CopyHeadersFrom(originalMessage);
}
encoding.GetString(array)
拋出OutOfMemoryException
。有沒有其他方法可以在不使用這些轉換的情況下修改郵件正文?