I get the exception when executing the following code. Any ideas what is wrong?
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());
Edit:
Here is the exception message and first line of stacktrace
Cannot determine whether a queue with the specified format name
exists.
at System.Messaging.MessageQueue.Exists(String path)
It works for a local queue by the way.
From your sample, it looks like you’re trying to check whether a remote private queue exists, but as the
MessageQueue.Existsdocumentation says:Trying to do so will produce an
InvalidOperationException.If you really need this information for your workflow, you can use the
MessageQueue. GetPrivateQueuesByMachinemethod and iterate the results to find a match. If you do, I recommend reading Are Remote MSMQ Queues Reliable?, which discusses this approach in some depth.This post from the excellent “MSMQ from the plumber’s mate” blog suggests another alternative: don’t even check whether your queues exist, “but instead handle the non-delivery of the message should it turn out that the queue doesn’t exist.” (You’ll need to track administration queues and/or dead-letter queues, but you should probably be doing that anyway.)