Para otros que luchan con esto y tiran de los pelos como si hubiera sido, por fin encontré algo que funciona cuando todas las sugerencias upvoted fallidos.
Incluso si cree que el nombre de host del sistema de alojamiento de la cola de destino se está resolviendo correctamente, no lo crea. Intente reemplazar el nombre de host con una dirección IP y vea si funciona. Lo hace por miPuedo ESCRIBIR a una cola pública utilizando un nombre de host en mi servidor remoto sin problemas, pero tratar de LEER de él produce exactamente el error enumerado para esta pregunta.
Por ejemplo, si declaro lo siguiente:
private static string QueueName = @"FormatName:DIRECT=TCP:SOMEHOST\MyQueue";
private static System.Messaging.MessageQueue Queue = new System.Messaging.MessageQueue(QueueName);
Donde "MyQueue" es una cola pública en somehost servidor, el siguiente código se inserte con éxito mensajes a la cola, pero siempre falla en la recepción ():
Queue.Formatter = new XmlMessageFormatter(new Type[] { typeof(String) });
// The Receive() call here is a blocking call. We'll wait if there is no message in the queue, and processing
// is halted until there IS a message in the queue.
//
try
{
Queue.Send("hello world", System.Messaging.MessageQueueTransactionType.Single);
var msg = Queue.Receive(MessageQueueTransactionType.Single);
}
catch (Exception ex)
{
// todo error handling
}
Un simple cambio en la forma en que especifique la ubicación de la cola es todo lo que se necesita para hacer la recepción() deje de fallar con el temido "cola no existe o no tiene permisos suficientes" error:
private static string QueueName = @"FormatName:DIRECT=TCP:192.168.1.100\MyQueue";
(Obviamente he ofuscado las direcciones IP y otra información confidencial). El uso de la dirección IP no es obviamente un escenario digno de producción, pero me señaló algún tipo de problema de resolución de nombres como la posible causa del error. No puedo explicar por qué Send() funciona, pero Receive() no lo hace cuando utilizo un nombre de host en lugar de IP, pero puedo reproducir estos resultados de forma coherente. Hasta que sepa qué está pasando con la resolución del nombre, ya no estoy perdiendo un día tratando de leer los mensajes de una cola.
En el panel de espera de Administración de equipos, todas las carpetas de cola están duplicadas. Algo es muy extraño con su máquina. –