2009-09-23 9 views
4

J'ai une file d'attente privée sur une machine distante à laquelle tout le monde et la connexion anonyme ont un accès complet. Le code suivant produit et erreur en essayant de recevoir:Comment recevoir un message à partir d'une file d'attente de groupe de travail privé

var qpath = @"FormatName:DIRECT=TCP:xx.xx.xx.xx\PRIVATE$\QueueName"; 
var q = new MessageQueue(qpath);    
var msg = new Message(); 
msg.AttachSenderId = false; 
msg.Recoverable = true; 
msg.Body = "hello"; 
q.Send(msg); // <-- this works! 
var recMsg = q.Receive(TimeSpan.Zero); // <-- this breaks! :| 
  • Le message d'erreur est le suivant: le service Message Queue n'est pas disponible.
  • Le message envoyé sont dans la Mettre fin à la file d'attente sur la machine distante
  • La même chose se produit lorsque vous utilisez OS: MachineName au lieu de TCP: xx.xx.xx.xx
  • Le serveur de file d'attente ne fait pas partie du domaine .

Des idées?

Répondre

3

Si la machine distante fait partie d'un domaine différent alors:

applications MSMQ 3.0 en cours d'exécution sur les ordinateurs inter-forêts exécutant un membre de la famille dans des domaines non approuvés utilisera l'API lecture à distance sécurisée. Par défaut, le serveur MSMQ 3.0 hébergeant la file d'attente contenant le message à lire requiert d'autres ordinateurs de domaine effectuant des requêtes de lecture pour établir un canal chiffré, mais un tel canal ne peut pas être établi entre des domaines non approuvés. Ainsi, les demandes de lecture à distance provenant d'ordinateurs inter-forêts seront rejetées. Pour modifier ce comportement par défaut et permettre au serveur Message Queuing d'accepter les demandes des ordinateurs de domaine qui ne crée pas un canal crypté, ajoutez le

HKLM\SOFTWARE\Microsoft \MSMQ\Parameters\Security\NewRemoteReadServerAllowNoneSecurityClient

entrée de Registre

(un DWORD) et le mettre à 1.

C'est la forme: Reading Messages from Remote Queues.

+1

Merci. Cela m'a mis sur la bonne voie. Il s'est avéré être un problème de permission et comme il fonctionnait sur 2008 Server c'était une option que je pouvais changer via l'interface graphique. –

Questions connexes