【问题标题】:MSMQ::GetPrivateQueuesByMachine fails when using "localhost"使用“localhost”时 MSMQ::GetPrivateQueuesByMachine 失败
【发布时间】:2011-07-18 05:17:18
【问题描述】:

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

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

【问题讨论】:

  • 你有解决这个问题的办法吗?如果有,你能帮我吗
  • @Arun 我没有。我刚开始使用“。”到处。惭愧……=[
  • 好的,谢谢你的重播...我想我需要找到其他方法..

标签: c# msmq


【解决方案1】:

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

【讨论】:

  • 意思是在问题中提到检查。 localhost 确实被列出并且可以在网络浏览器中使用。此外,考虑到 127.0.0.1 失败,它在某种程度上胜过 hosts 文件。
  • 是的。在你的测试中,你有“。”成功但“机器名”没有。我假设 machineName 只是您隐藏了真实的机器名称。 “。”应该解析为本地机器名,然后连接。因此,机器解析自己名称的方式似乎有问题。
猜你喜欢
  • 1970-01-01
  • 2014-07-22
  • 2019-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-20
  • 2011-10-20
相关资源
最近更新 更多