51 votes

L'accès au système de mise en file d'attente des messages est refusé

J'essaie d'accéder à la file d'attente des messages de mon hôte, mais en essayant d'obtenir le message, je reçois le message "Access to Message Queuing system is denied. Je ne sais pas comment résoudre ce problème. J'utilise Windows 7 comme système client et le serveur est Windows 2008 R2 Server.

30voto

Glade Mellor Points 449

J'ai rencontré le même problème en essayant d'écrire dans le MSMQ via ASP.NET (Windows 7). J'ai ajouté les permissions "Receive Message" "Peek Message" et "Send Message" et cela fonctionne correctement maintenant. Si vous exécutez ce programme via ASP.NET, vous êtes probablement sous le compte IIS_IUSRS.

14voto

Dans mon cas, les files d'attente MSMQ appartenaient à mon propre compte d'utilisateur Windows (local admin), car elles avaient été créées en exécutant une application console de Visual Studio en mode administrateur.

Ma web-app s'exécute en tant que NETWORK SERVICE qui a donné naissance à la

L'accès au système de mise en file d'attente des messages est refusé

erreur.

J'ai corrigé cela en donnant NETWORK SERVICE contrôle total :

Gestion informatique > Services et applications > File d'attente des messages > Files d'attente privées > File d'attente par clic droit > Propriétés > Sécurité

Redémarrez le service MSMQ et IIS :

NET STOP MSMQ
NET START MSMQ
IISRESET

11voto

Harvard Chan Points 119

Server2008 :

  1. Contrôle Panel->Administration Tools->Computer Management .

  2. Sur Computer Management->Services and Applications->Message Queuing->Private Queues .

  3. Clic droit [UrQueueName] -> Properties -> Security

    • Mettre tout le monde au contrôle total
    • Réglez le LOGON ANONYME sur Contrôle total.
  4. En informatique Management -> Services

    • Redémarrez le service de mise en file d'attente des messages.

Dans Windows 7(Client) : Créer une file de messages Rc avec FormatName:DIRECT=OS:MachineName\private$\UrQueueName

Exemple :

rcmq = new System.Messaging.MessageQueue(string.Format("FormatName:DIRECT=OS:{0}\\private$\\{1}", rcMachineName,rcQueueName));

7voto

Myka Eyl Points 485

Grâce à ce post, j'ai pu supprimer le problème "Accès refusé" : https://codifying.wordpress.com/2012/04/16/msmq-solving-access-denied-errors-for-private-queues/

Le problème initial

...c'est frustrant, la file d'attente est répertoriée dans la gestion du serveur sous les files d'attente privées, mais je n'ai pas eu la possibilité de :

  • Supprimer => Permission refusée
  • Modifier la permission de sécurité => Permission refusée
  • Voir le message restant dans la file d'attente => Permission refusée

La solution

  1. Créer manuellement une file d'attente (utilisée plus tard), appelons-la FA1
  2. Services de fermeture : Mise en file d'attente des messages (+ adaptateur d'écouteur pour Net.Msmq)
  3. Ensuite, allez dans System32/msmq/storage/lqs
  4. Trouvez le dernier fichier pour FA1 (vérifiez si c'est le bon fichier, chaque fichier ici peut être ouvert avec le bloc-notes) et ensuite copiez la valeur de l'attribut Sécurité.
  5. Trouvez le fichier associé à la file d'attente des problèmes, collez-y la valeur copiée à l'étape précédente.
  6. Supprimer le fichier associé à FA1
  7. Ouvrir les deux services précédemment fermés
  8. Allez dans le Gestionnaire de serveur

Le message d'erreur ne devrait plus apparaître

Mais... vous pourriez avoir un autre problème avec votre logiciel en essayant de lire/connecter à cette file d'attente, il se plaindra qu'il n'a pas assez de privilèges, donc la dernière étape est d'aller dans les propriétés avancées de cette file d'attente et de définir l'accès de contrôle complet à tout le monde (bien, peut-être que vous spécifierez un utilisateur spécifique, mais c'est ce que j'ai fait pour m'assurer que je ne suis pas bloqué sur mon propre serveur de développement).

7voto

John Breakwell Points 3247

Si vous essayez de lire un message à partir d'une file d'attente distante, les autorisations sont le principal coupable, comme l'a mentionné kprobst.

Vous pouvez également obtenir d'autres causes :

Échec de la lecture des files d'attente MSMQ distantes

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X