繁体   English   中英

发送到远程MSMQ静默失败

[英]Send to remote MSMQ silently fails

我正在尝试将消息发送到C#中的远程消息队列。

这是我正在使用的路径:

FormatName:Direct=TCP:192.168.0.10\private$\test_in

.Send方法无例外地传递,但远程队列中不显示任何消息。 奇怪的是,我可以毫无问题地从同一个队列中接收。

远程计算机上的队列是非事务性的,本地计算机上的代码也是如此。 它还具有“所有人”的“完全访问权”。

我已经阅读了一些针对有类似问题的人的回复,但这些解决方案似乎都不适用于我。 我已经检查了本地计算机上的“发送队列”部分,它们都显示为“已连接”到远程队列,但也表明没有消息发送。 似乎还没有尝试过。

任何想法我的问题可能是什么? 谢谢。

编辑:更多信息 - 本地计算机是Windows 8.远程计算机是Windows Server 2012。

编辑:休的答案导致我真正的原因。 我需要将ANONYMOUS LOGON的权限添加到远程队列('Everyone'是不够的)。 希望这有助于某人。

已在发送计算机上创建了传出队列,并且此队列没有消息的事实,这意味着该消息已发送到接收计算机。

所以问题将出现在接收机器上。 可能是队列权限。 机器是否在不同的Windows域中?

如果启用msmq事件日志(事件查看器 - >应用程序和服务日志 - > Microsoft - > Windows - > MSMQ),您应该能够确切地看到消息到达后发生的情况。

休的回答让我了解了真正的原因。 我需要将ANONYMOUS LOGON的权限添加到远程队列('Everyone'是不够的)。 希望这有助于某人。

在我的情况下,消息也没有显示在远程专用队列中。 我在这里查看了其中一个答案,并将“Everyone”完全控制权交给了私有队列,然后消息开始填充队列。 然而,稍微改进一下,我确定“每个人”都不适合我的情况。 我的目标是让生产服务器将消息写入开发服务器。 因此,最后我需要做的是将服务器/工作站名称添加到此安全列表中,仅使用“发送”权限。

单击“添加”按钮,在Active Directory计算机对象类型列表中查找服务器/工作站名称。

检查格式字符串的拼写:

FormatName:DIRECT=OS:YOURMACHINENAME\private$\YourQueueName

请注意,第一部分FormatName:DIRECT可能区分大小写。 我还没有将它用于TCP ,但我认为无论使用的协议如何,区分大小写都适用。

您可能已经知道直接格式名称的MSDN页面,但如果没有,它可能值得阅读。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM