Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Message.Body-无法反序列化作为参数传递的消息。无法识别序列化格式_C#_Msmq - Fatal编程技术网

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

C# Message.Body-无法反序列化作为参数传递的消息。无法识别序列化格式,c#,msmq,C#,Msmq,在创建新的“事务性”队列时,我首先需要查找是否存在同名的“非事务性”消息队列。如果需要,我需要将消息从旧队列复制到新的事务队列 要实现这一点(当我找到同名的旧队列时): 1.我正在创建一个临时队列(我发现它在默认情况下被创建为事务性队列)。 2.我正在循环浏览来自旧队列的消息,并将它们发送到新队列。 3.删除旧队列 4.创建新的事务队列。 5.循环处理来自临时事务队列的消息并将其发送到新队列。 6.删除临时队列 消息从旧队列发送到新队列,没有任何异常。但是,当我尝试将消息正文作为message.

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

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

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

Body='message.Body'抛出了一个 类型异常 “System.InvalidOperationException” 无法反序列化传递的消息 作为论据。无法识别 序列化格式

我如何达到上述要求,我的方法会出现什么问题

我对MSMQ很陌生。 (使用Windows XP、Visual Studio 2008、.NET 2.0)

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

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

  • 使用什么代码创建原始消息
  • 使用什么代码在临时队列中创建新消息
  • 使用什么代码在最终队列中创建新消息
  • 用于从最终队列读取消息的代码是什么
  • 我希望消息不是以相同的方式重新创建,就是接收进程没有以正确的方式读取它们。也就是说,您使用了哪种消息格式化程序?比如说ActiveX

    干杯

    约翰·布雷克韦尔(John Breakwell)

    我非常感谢你对这个问题的分析,我也投了赞成票,因为这对面临这个问题的人来说是有用的。你提出的所有问题在原问题中提到的情况下都非常有效。然而,即使在处理了所有这些事情之后,不知何故,我有时也会遇到同样的例外,但并非总是如此!这是一个消息体良好但引发异常的问题。或者消息正文已损坏,因此无法读取?从队列或临时队列读取消息时是否会出现异常?