//序列化并发送到消息队列:
sqlDataAdapter1.Fill(dataSet11);
try
{
string MessagePath = ".\\private$\\david";
System.Messaging.MessageQueue QueueObject = new System.Messaging.MessageQueue(MessagePath);
System.Messaging.Message MessageObject = new System.Messaging.Message();
MessageObject.Recoverable = true;//保存到文件,防止计算机重新启动丢失
MessageObject.Body = dataSet11.GetXml();//消息内容
MessageObject.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] {typeof(string)});
QueueObject.Send(MessageObject);
}
catch(Exception ExString)
{
MessageBox.Show("系统发送错误:" + ExString.ToString());
}
MessageBox.Show("发送完成!");
-------------------------------------------------------------------------
//接收消息并反序列化:
System.Messaging.MessageQueue queue = new System.Messaging.MessageQueue(".\\Private$\\david");
System.Messaging.Message message = queue.Receive();
message.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] {typeof(string)});
DataSet TempDataSet = (DataSet)message.Body;
dataSet11.Clear();
dataSet11 = (DMSC.DataSet1)TempDataSet;
--------------------------------------------------------------------
当程序执行到DataSet TempDataSet = (DataSet)message.Body;时,报错。
提示如下:其他信息: 无法将作为参数传递的消息反序列化。无法识别序列化格式
那个老大帮忙看看。
sqlDataAdapter1.Fill(dataSet11);
try
{
string MessagePath = ".\\private$\\david";
System.Messaging.MessageQueue QueueObject = new System.Messaging.MessageQueue(MessagePath);
System.Messaging.Message MessageObject = new System.Messaging.Message();
MessageObject.Recoverable = true;//保存到文件,防止计算机重新启动丢失
MessageObject.Body = dataSet11.GetXml();//消息内容
MessageObject.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] {typeof(string)});
QueueObject.Send(MessageObject);
}
catch(Exception ExString)
{
MessageBox.Show("系统发送错误:" + ExString.ToString());
}
MessageBox.Show("发送完成!");
-------------------------------------------------------------------------
//接收消息并反序列化:
System.Messaging.MessageQueue queue = new System.Messaging.MessageQueue(".\\Private$\\david");
System.Messaging.Message message = queue.Receive();
message.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] {typeof(string)});
DataSet TempDataSet = (DataSet)message.Body;
dataSet11.Clear();
dataSet11 = (DMSC.DataSet1)TempDataSet;
--------------------------------------------------------------------
当程序执行到DataSet TempDataSet = (DataSet)message.Body;时,报错。
提示如下:其他信息: 无法将作为参数传递的消息反序列化。无法识别序列化格式
那个老大帮忙看看。
MessageObject.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] {typeof(string)});改成XML传输格式.原因是DataSet在序列化成xml的时候,会对时间,字符串等等加上特殊标志字符,你如果直接用String传输,到接收端就按照string来反序列化了,自然是错的.
如果实在有问题,贴出来,俺帮你分析......
System.Type.GetType("System.String");typeof 的参数是不是要是实例
streamWriter.Write(XMLString);
DataSet set = new DataSet();
set.ReadXml(streamWriter.BaseStream);