Я пытаюсь сериализовать сообщение WCF, используя DataContractSerializer, чтобы получить размер сообщения (без использования средства просмотра трассировки службы). Ниже приведен фрагмент кода:
public void BeforeSendReply(ref Message reply, object correlationState)
{
byte[] bytes = null;
var messageBuffer = reply.CreateBufferedCopy(Int32.MaxValue);
var message = messageBuffer.CreateMessage();
var dcs = new DataContractSerializer(typeof(Message));
using (var ms = new MemoryStream())
{
dcs.WriteObject(ms, message);
bytes = ms.ToArray();
Console.WriteLine(String.Format("Message size = {0}", bytes.Count()));
}
}
При этом возникает следующее исключение:
Тип
'System.ServiceModel.Channels.BodyWriterMessage'
не может быть сериализовано. Рассматривать
пометив его
Атрибут DataContractAttribute и
отмечая всех своих членов вы хотите
сериализовано с
Атрибут DataMemberAttribute. Если
typ e - это коллекция, рассмотрим
пометив его
CollectionDataContractAttribute.
Что можно сделать?