使用MSMQ和Hosts File条目

时间:2012-10-02 10:03:10

标签: msmq

我正在尝试在hosts文件中使用别名指向包含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.

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

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

打开您的注册表,确保

HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ\Parameters\IgnoreOSNameValidation

设置为1(DWORD值)

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

(来自John Breakwell的帖子here