2011-03-18 11 views
5

tengo software que se ejecuta a nivel local y en un número de servidores que hace lo siguiente:MSMQ :: GetPrivateQueuesByMachine falla al utilizar "localhost"

var queues = MessageQueue.GetPrivateQueuesByMachine("localhost"); 

Un servidor en particular, se emite una excepción:

System.Messaging.MessageQueueException: Message Queue service is not available. 
    at System.Messaging.MessageQueue.GetPrivateQueuesByMachine(String machineName) 

MSMQ está instalado igual que en mis otras máquinas. También tengo varios Servicios WCF vinculados con éxito al net.msmq://localhost/private/....

¿Hay algún motivo por el que MSMQ no esté vinculado a localhost?

Después de comprobar MSDN, parece que debería usar ".", Que funciona muy bien, pero prefiero evitar cambiar el código y volver a desplegar, cuando localhost parece ser totalmente eficiente. Fwiw, aquí están los resultados de otras pruebas me encontré:

var queues = MessageQueue.GetPrivateQueuesByMachine("."); // succeeds 
var queues = MessageQueue.GetPrivateQueuesByMachine("localhost"); // fails 
var queues = MessageQueue.GetPrivateQueuesByMachine("127.0.0.1"); // fails 
var queues = MessageQueue.GetPrivateQueuesByMachine("machineName"); // fails 
+0

¿Has encontrado alguna solución para este problema? Si es así me ayudarás –

+0

@Arún no lo hice. Acabo de empezar a usar "." en todos lados. Por vergüenza ... = [ – Langdon

+0

Ok, gracias por la repetición ... Creo que tengo que encontrar de otra manera .. –

Respuesta

1

No es probable que haya una correlación de entradas archivo HOSTS localhost dirección IP a un nombre de máquina.

+2

Quisiera mencionar que en la pregunta. Localhost está en la lista y funciona desde un navegador web. Además, teniendo en cuenta que 127.0.0.1 falla, de alguna manera supera el archivo de hosts. – Langdon

+0

Es cierto. En tu prueba, tienes "." teniendo éxito, pero "machinename" no. Supongo que MachineName es solo que usted oculta el nombre real de la máquina. "." debe resolver el nombre de la máquina local y luego conectarse. Por lo tanto, parece haber algún problema con la forma en que la máquina resuelve su propio nombre. –