我在Windows CE 5设备上运行了一个小的.NET控制台应用程序,它收集了RFID标签信息。在读取每个标记时,它会将相关数据写入位于Windows 7计算机上的远程消息队列中。队列是私有的,所以我明确地访问它,这是我理解的方法。它是事务性的,虽然我不认为这与问题的上下文有关,因为我认为SendMsg的默认值是自动的。我当然错了。
使用(var myQueue = new MessageQueue(“FormatName:Direct = OS:w7machinename \ private $ \ tags”)) { 尝试 { myQueue.Send(newTag); } catch(Exception ex) { Console.WriteLine(ex.Message); } }
如果我运行该程序,则不会引发异常。出于所有意图和目的,它似乎已将数据写入队列。但是,如果我使用QueueExplorer查看队列,队列中没有消息。如果在运行之后我转到我的Win CE 5设备Dos提示符并执行msmqadm枚举队列我发现它知道队列,它表示它是私有的,远程的和非活动的0 msg和0字节。
我在其他帖子中看到,更改队列的权限没有任何区别,但对此的一些澄清将是好的。还有人提到了防火墙和端口,但我对此答案感到有些困惑。
我希望这是有足够的信息让别人看到我的问题/错误,并提前感谢任何人提供任何帮助或指示。
对源代码格式化表示歉意。 问候 Kindo Malay
答案 0 :(得分:1)
好好玩了很多,我已经意识到了一些东西。
确定在一般级别上,远程队列上的消息不会出现,也不会单独发送原始计算机上发生错误的消息,除非该队列具有匿名用户发送消息的权限并取得所有权。我不确定是否超出发送消息还有哪些其他选项可以显示消息。此外,我想我需要做更多的研究和/或就如何在生产环境中使用权限提出建议。
另外由于我假设MSDTC没有运行队列不能是事务性的。
我在Windows CE设备中看到的是,尽管msmqadm枚举队列实际上列出了远程队列,但它无法确定是否有任何消息。
所以,我们......我希望这有助于其他人。