执行以下代码时出现异常。任何想法有什么问题吗?
string queueName = "FormatName:Direct=TCP:1.1.1.1\\Private$\\test";
MessageQueue queue;
if (MessageQueue.Exists(queueName))
queue = new System.Messaging.MessageQueue(queueName);
else queue = MessageQueue.Create(queueName);
queue.Send(sWriter.ToString());
编辑:
这是异常消息和堆栈跟踪的第一行
无法确定队列是否具有指定的格式名称
存在。
在 System.Messaging.MessageQueue.Exists(字符串路径)
顺便说一句,它适用于本地队列。
从您的示例来看,您似乎正在尝试检查远程专用队列是否存在,但作为MessageQueue.Exists http://msdn.microsoft.com/en-us/library/system.messaging.messagequeue.exists.aspx文档说:
无法调用存在来验证
存在远程专用队列。
尝试这样做会产生InvalidOperationException
.
如果您的工作流程确实需要此信息,您可以使用MessageQueue. GetPrivateQueuesByMachine http://msdn.microsoft.com/en-us/library/system.messaging.messagequeue.getprivatequeuesbymachine.aspx方法并迭代结果以找到匹配项。如果你这样做,我建议你阅读远程 MSMQ 队列可靠吗? http://www.infosysblogs.com/microsoft/2008/02/are_remote_msmq_queues_reliabl.html,其中深入讨论了这种方法。
这篇文章来自优秀的“来自水管工伙伴的 MSMQ”博客 http://blogs.msdn.com/johnbreakwell/archive/2008/07/31/checking-if-msmq-queues-exist-is-hard-work-so-should-you-bother.aspx建议另一种选择:甚至不检查队列是否存在,“而是在队列不存在时处理消息未传递的情况。” (您需要跟踪管理队列和/或死信队列,但无论如何您都应该这样做。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)