我在本地和许多服务器上运行软件,执行以下操作:
var queues = MessageQueue.GetPrivateQueuesByMachine("localhost");
特别是一台服务器抛出异常:
System.Messaging.MessageQueueException: Message Queue service is not available.
at System.Messaging.MessageQueue.GetPrivateQueuesByMachine(String machineName)
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
答案 0 :(得分:1)
可能有一个HOSTS文件条目将localhosts IP地址映射到某个机器名。