1

我正在尝试使用 MSMQ 从移动设备向服务器上的远程专用队列发送消息。

发生了什么?移动代码发送消息时,我没有遇到任何错误。如果我查看移动设备上的 msmq 文件夹,它确实为它发送到的远程创建了一个 .oq(出站队列)文件。

我在队列的格式名称中使用 Direct=TCP 和 IP 地址。我已经验证了相同的代码在我的桌面上运行没有问题。消息已正确传递。

我不认为代码是问题。也许我遗漏了一些必须在移动环境中完成的操作,以允许消息离开队列并传递到服务器。

我已经验证或解决问题的事情:

  1. 我已验证使用 verify 从 visadm 报告的所有内容都是可以接受的。
  2. 为 MSMQ 启用二进制。
  3. 日志报告 MSMQ 已启动且没有错误。
  4. 所有 SDK 证书都安装在设备上。
  5. 发送出站消息时会创建一个 .oq 文件。
  6. 邮件上启用了日志和死信。(服务器没有报告无法送达 - 我不相信它曾经连接过)
  7. 网络活跃且有效(我可以通过浏览器访问托管在服务器上的网页)
  8. 服务器 MSMQ 有效(我可以使用桌面上的相同代码并传递消息)
  9. 通过 visadm,MSMQ 的移动设备上的状态报告正确。

我希望有人可能熟悉 Windows Mobile 上的 MSMQ,他们可以就我可能没有检查或启用的内容给我一些建议。

我在设备上使用 .Net CF 3.5 并使用 C# 进行编码,但正如我所说,代码似乎不是问题。

提前感谢您的帮助

4

1 回答 1

1

似乎问题在于服务器使用了事务性消息队列。一旦我将 ;XACTONLY 添加到我的消息队列字符串的末尾并更改了 Send 方法以使用 System.Messaging.MessageQueueTransactionType.Single 它就起作用了。你会认为它会抛出一个错误或一些东西让你知道这是需要的。

于 2009-06-01T21:48:02.423 回答