我在这里遇到了一个非常奇怪的问题。我有一台安装了消息队列的 Windows 2008 R2 服务器。在另一台运行 Windows 2003 的机器上,有一个服务设置为将消息发送到 2008 服务器上的公共队列。但是,消息从未显示在服务器上。
我编写了一个小型控制台应用程序,它只是向 2008 计算机上的测试队列发送一条“Hello World”消息。在 XP 或 2003 上运行此应用程序完全没有结果。但是,当我尝试在 Windows 7 计算机上运行该应用程序时,消息传递得很好。
我已经尝试过各种安全设置,在所有机器上禁用防火墙等。事件日志没有显示任何有趣的内容,并且客户端上也没有抛出任何异常。
在服务器上运行数据包嗅探器 (WireShark) 只能发现一点信息。当尝试从 XP 或 2003 发送消息时,我只看到端口 3527 上的 ICMP 错误“端口不可访问”(我猜想这是 MQPing 数据包?)。之后,一片寂静。当我从 Win7 客户端尝试时,Wireshark 显示了一小段不错的数据包流(正如预期的那样 - 消息从 Win7 传递得很好)。
我已经在服务器上启用了 MSMQ End2End 日志记录,但只有从我的 Win7 机器发送的消息的条目才会出现在日志中。
因此,不知何故,似乎消息在从 XP 或 2003 到我的 2008 服务器的某个路径上被悄悄丢弃了。
有谁能知道是什么导致了这种神秘行为?
-- 杰斯珀
答案1
哇!Twitter 的力量真是惊人。一位名叫 John Breakwell 的家伙(http://blogs.msdn.com/johnbreakwell/default.aspx) 回复了我对此的推文,并向我指出了我的一条线索,即 ICMP“端口不可达”线索。
他向我推荐了technet 文章它会告诉您如何重新启用在端口 3527 上运行的 ping 服务。只需进行简单的注册表破解(并重新启动 MSMQ),现在我的 Win2008 服务器就可以顺利地接收消息 :-)
-- 杰斯珀
答案2
我解决了一个类似的问题(2005 年到 2008 年的消息无法发送)。“Everyone”用户可以发送消息,但“ANONYMOUS LOGON”用户则不行。
您需要授权“ANONYMOUS LOGON”用户发送消息。“Everyone”用户不包括匿名用户。