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

发布于 2024-10-12 15:10:58 字数 537 浏览 2 评论 0原文

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

为了实现这一点(当我找到同名的旧队列时): 1.我正在创建一个临时队列(我发现默认情况下将其创建为事务队列)。 2. 我正在循环旧队列中的消息并将它们发送到新队列。 3.删除旧队列 4. 创建新的事务队列。 5.循环遍历临时事务队列中的消息并将它们发送到新队列。 6. 删除临时队列

消息无异常地从旧队列发送到新队列。但是,当我尝试将消息正文读取为 message.Body 时

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

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

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

While creating a new 'transactional' queue, I first need to find if any 'non transactional' MessageQueue with the same name exists or not. If one does, I need to copy messages from old queue to new transactional queue.

To achieve this (when I find old queue with the same name):
1. I am creating a temporary queue (which I found being created as Transactional by default).
2. I am looping through messages from old queue and sending them to new queue.
3. Deleting the old queue
4. Creating new transactional queue.
5. looping through messages from temporary transactional queue and sending them to new queue.
6. Deleting the temporary queue

The messages are sent from old queue to new queue without any exception. However when I try to read the message body as message.Body

Body = 'message.Body' threw an
exception of type
'System.InvalidOperationException'
Cannot deserialize the message passed
as an argument. Cannot recognize the
serialization format

How can I achieve the mentioned requirement and what would be going wrong in my approach?

I am quite new to MSMQ.
(Using Windows XP, Visual Studio 2008, .NET 2.0)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

记忆里有你的影子 2024-10-19 15:10:58

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

因此,如果您以“好”消息开始,并不意味着您最终会得到相同的结果。
重要的信息是:

  1. 使用什么代码创建原始消息 使用
  2. 什么代码在临时队列中创建新消息 使用
  3. 什么代码在最终队列中创建新消息 使用
  4. 什么代码从最终队列中读取消息 我期望消息

不会以相同的方式重新创建,或者接收进程没有以正确的方式读取它们。也就是说,您使用了哪种消息格式化程序?例如,ActiveX?

干杯
约翰·布瑞克威尔

You are not "looping through messages from old queue and sending them to new queue".
You are instead creating new messages using the data from the old messages.

So if you start with a "good" message, it doesn't mean you will end up with the same.
The important information is what:

  1. What code was used to create the original message
  2. What code is used to create the new message in temp queue
  3. What code is used to create the new message in final queue
  4. What code is used to read the message from the final queue

I am expecting either that the messages are not being recreated in the same way or the receiving process is not reading them in the right way. That is, which message formatter did you use? ActiveX, for example?

Cheers
John Breakwell

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文