【发布时间】:2011-01-18 22:05:56
【问题描述】:
我正在尝试使用 DataContractSerializer 序列化 WCF 消息以获取消息大小(不使用服务跟踪查看器)。以下是代码sn-p:
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 属性。如果 类型 e 是一个集合,考虑 用 CollectionDataContractAttribute。
可以做什么?
【问题讨论】:
-
您使用的是什么版本的 .NET?你能确认你没有使用 v3.5(不是 SP1)