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
. Есть ли другие способы, как можно изменить тело сообщения без использования этих преобразований?