2

我正在尝试使用主机文件中的别名来指向包含 MSMQ 的服务器。如果我在 MSMQ 路径中指定实际的服务器名称,那么一切正常:

var queue = new MessageQueue("FormatName:DIRECT=OS:queue-server\Private$\some-queue");
var enumerator = queue.GetMessageEnumerator2();

while (enumerator.MoveToNextRecord())
{
    // Do something
}

但是,如果我创建以下主机文件条目:

XXX.XXX.XXX.XXX     queue-server-alias  #queue-server

然后使用别名引用队列:

var queue = new MessageQueue("FormatName:DIRECT=OS:queue-server-alias\Private$\some-queue");

然后我收到以下错误:

The queue does not exist or you do not have sufficient permissions to perform the operation.

主机文件条目是正确的,我可以 ping 别名并返回正确的 IP 地址。我已经阅读了以下详细介绍各种 MSMQ 路径格式的文章,但似乎都没有解决问题: Difference between Path name and Format name when access MSMQ queues

有任何想法吗?

4

1 回答 1

3

打开您的注册表,确保

HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ\Parameters\IgnoreOSNameValidation

设置为 1(DWORD 值)

这意味着 msmq 在尝试发送消息之前不会验证目标队列。

(来自 John Breakwell 的帖子

于 2012-10-05T10:19:16.997 回答