Message.Body - 无法反序列化作为参数传递的消息。无法识别序列化格式

时间:2011-01-19 12:42:31

标签: c# msmq

在创建新的“事务”队列时,我首先需要查找是否存在任何具有相同名称的“非事务性”MessageQueue。如果有,我需要将消息从旧队列复制到新的事务队列。

要实现这一点(当我找到具有相同名称的旧队列时): 1.我正在创建一个临时队列(我发现默认情况下创建为Transactional)。 我正在循环来自旧队列的消息并将它们发送到新队列。 3.删除旧队列 4.创建新的事务队列。 5.循环来自临时事务队列的消息并将它们发送到新队列。 6.删除临时队列

消息从旧队列发送到新队列,没有任何异常。但是,当我尝试将消息正文作为message.Body

阅读时
  

Body ='message.Body'扔了一个   类型例外   'System.InvalidOperationException'   无法反序列化传递的消息   作为一个论点。无法识别   序列化格式

我如何实现上述要求以及我的方法会出现什么问题?

我对MSMQ很新。 (使用Windows XP,Visual Studio 2008,.NET 2.0)

1 个答案:

答案 0 :(得分:2)

您不是“循环来自旧队列的消息并将其发送到新队列”。 而是使用旧消息中的数据创建新消息。

因此,如果你从一个“好”的消息开始,那并不意味着你最终会得到同样的结果。 重要的信息是:

  1. 使用了哪些代码来创建原始邮件
  2. 使用什么代码在临时队列中创建新消息
  3. 使用什么代码在最终队列中创建新消息
  4. 使用什么代码从最终队列中读取消息
  5. 我期望消息没有以相同的方式重新创建,或者接收过程没有以正确的方式读取它们。也就是说,您使用了哪种消息格式化程序?例如,ActiveX?

    干杯
    John Breakwell