C#里如何发送XML的消息队列

yingzhanqiu 2008-05-31 07:44:20
我想让消息队列中的正文内容为:
<?xml version="1.0" encoding="GB2312"?>
<MESSAGE_ID>
<MESSAGE_ONE>ONE</MESSAGE_ONE>
<MESSAGE_TWO>TWO</MESSAGE_TWO>
</MESSAGE_ID>
用以下的代码:(只是部分核心代码)
public class MESSAGE_ID
{
public string MESSAGE_ONE;
public string MESSAGE_TWO;
}

MESSAGE_ID mi=new MESSAGE_ID();
mi.MESSAGE_ONE="ONE";
mi.MESSAGE_TWO="TWO";

messageRead.Formatter = new XmlMessageFormatter(new Type[]{typeof(MESSAGE_ID)}); //1
((XmlMessageFormatter)messageRead.Formatter).TargetTypeNames = new string[]{"MESSAGE_ID"}; //2
messageRead.Send(mi);
用以上两种方式定义消息的格式得到的结果都是一样的,在消息的正文里实际得到的是:
<?xml version="1.0"?>
<MESSAGE_ID xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<MESSAGE_ONE>ONE</MESSAGE_ONE>
<MESSAGE_TWO>TWO</MESSAGE_TWO>
</MESSAGE_ID>
请问各位我如何才能发送我想要的格式呢?是不是我的方法不对?




...全文
356 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yingzhanqiu 2008-06-02
  • 打赏
  • 举报
回复
已经发现一个问题,我不应该用message.body属性,这个属性需要序列化,因此为与你想发的数据有所不同
BinaryWriter bw=new BinaryWriter(new MemoryStream());
bw.Write(Info.Text.Trim());
message.BodyStream=bw.BaseStream;
messageQueue1.Send(message);
这样可以发送你想发的格式.
但还有一个问题,消息的正文中始终带有消息长度的信息
当我接收消息时:
BinaryReader br;
string rmsg;
System.Messaging.Message m = this.messageRead.EndReceive(e.AsyncResult);
br=new BinaryReader(m.BodyStream);
rmsg=new string(br.ReadChars(Convert.ToInt32(m.BodyStream.Length)));
MessageBox.Show(rmsg);

结果的rmsg中将消息长度的信息也接收到了,请问应该如何解决?
yingzhanqiu 2008-06-02
  • 打赏
  • 举报
回复
今日的测试结果是在接收他们消息时提示"无法将作为参数传递的消息反序列化。无法识别序列化格式"
请问哪位知道他的意思呀,如何发送和接收"参数传递的消息"?
ProjectDD 2008-06-01
  • 打赏
  • 举报
回复
没怎么用过消息队列,不过你的答案不是和你想要的答案差不多吗?
只是<MESSAGE_ID xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

后面多了个命名空间属性,是吗?我不知道我看懂你的问题没有,帮顶!
yingzhanqiu 2008-06-01
  • 打赏
  • 举报
回复
啊,楼上的什么意思?mark怎么用?
Jave.Lin 2008-06-01
  • 打赏
  • 举报
回复
mark
yingzhanqiu 2008-06-01
  • 打赏
  • 举报
回复
嗯,的确就XML来看这两行是没问题的
但这说明了我的发送方式与对方的不一样
因此才造成了我无法接收到了却无法看到对方发送的消息的内容
所以才想问问怎样才能发送那种形式的消息队列
changjiangzhibin 2008-06-01
  • 打赏
  • 举报
回复
XML文件传送,那两行不影响发送结果,

等LX给LZ好的答复
yingzhanqiu 2008-06-01
  • 打赏
  • 举报
回复
谢谢楼上!
我是需要接收别人的消息队列,他们发送出来的消息队列前两行是:
<?xml version="1.0" encoding="GB2312"?>
<MESSAGE_ID>
而我的是:
<?xml version="1.0"?>
<MESSAGE_ID xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
所以我觉得我们双方用的方法不一样,而且我能收到他们的消息但不能处理消息,消息内容打不开
我觉得问题应该是出在messageRead.Formatter 上
不知道有哪位知道?

或者我换个问题:
如何在消息队列中发送以下消息:
<?xml version="1.0" encoding="GB2312"?>
<MESSAGE_ID>
<MESSAGE_ONE>ONE </MESSAGE_ONE>
<MESSAGE_TWO>TWO </MESSAGE_TWO>
</MESSAGE_ID>
在消息正文中的内容要和以上的内容一模一样
谢谢各位了,我的分已经全部放这了...

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧