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.
Réponses
Trop de publicités?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.
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
Server2008 :
-
Contrôle
Panel->Administration Tools->Computer Management
. -
Sur
Computer Management->Services and Applications->Message Queuing->Private Queues
. -
Clic droit
[UrQueueName] -> Properties -> Security
- Mettre tout le monde au contrôle total
- Réglez le LOGON ANONYME sur Contrôle total.
-
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));
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
- Créer manuellement une file d'attente (utilisée plus tard), appelons-la FA1
- Services de fermeture : Mise en file d'attente des messages (+ adaptateur d'écouteur pour Net.Msmq)
- Ensuite, allez dans System32/msmq/storage/lqs
- 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é.
- Trouvez le fichier associé à la file d'attente des problèmes, collez-y la valeur copiée à l'étape précédente.
- Supprimer le fichier associé à FA1
- Ouvrir les deux services précédemment fermés
- 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).
- Réponses précédentes
- Plus de réponses