使用"localhost"时MSMQ :: GetPrivateQueuesByMachine失败

Lan*_*don 5 c# msmq

我有本地运行的软件,并在许多服务器上执行以下操作:

var queues = MessageQueue.GetPrivateQueuesByMachine("localhost");
Run Code Online (Sandbox Code Playgroud)

特别是一台服务器抛出一个异常:

System.Messaging.MessageQueueException: Message Queue service is not available.
  at System.Messaging.MessageQueue.GetPrivateQueuesByMachine(String machineName)
Run Code Online (Sandbox Code Playgroud)

MSMQ的安装方式与我在其他机器上的安装方式相同.我还成功绑定了多个WCF服务net.msmq://localhost/private/....

有没有理由说MSMQ可能没有绑定到localhost?

检查出MSDN之后,似乎我应该使用".",这很有用,但是当localhost似乎完全有效时,我宁愿避免更改代码和重新部署.FWIW,这是我运行的其他一些测试的结果:

var queues = MessageQueue.GetPrivateQueuesByMachine("."); // succeeds
var queues = MessageQueue.GetPrivateQueuesByMachine("localhost"); // fails
var queues = MessageQueue.GetPrivateQueuesByMachine("127.0.0.1"); // fails
var queues = MessageQueue.GetPrivateQueuesByMachine("machineName"); // fails
Run Code Online (Sandbox Code Playgroud)

Joh*_*ell 1

可能有一个 HOSTS 文件条目将本地主机 IP 地址映射到某个计算机名称。

  • 意思是在问题中提到检查这一点。localhost 确实已列出并可通过网络浏览器运行。此外,考虑到 127.0.0.1 失败,它在某种程度上胜过主机文件。 (2认同)