我正在尝试在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
有什么想法吗?
答案 0 :(得分:2)
打开您的注册表,确保
HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ\Parameters\IgnoreOSNameValidation
设置为1(DWORD值)
这意味着msmq在尝试发送消息之前不会验证目标队列。
(来自John Breakwell的帖子here)