我想使用DataContractSerializer序列化WCF消息以獲取消息大小(不使用服務跟蹤查看器)。以下是代碼片段:如何使用DataContractSerializer序列化WCF消息?
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屬性將其所有成員標記爲 。如果 類型是一個集合,請考慮使用 CollectionDataDataContractAttribute將其標記爲 。
可以做些什麼?
您正在使用什麼版本的.NET?你能否確認你沒有使用v3.5(不是SP1) – 2011-01-21 03:15:01