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

j'essaie d'accéder au message de file d'attente de mon hôte, tout en essayant d'obtenir le message je reçois "L'accès au système de mise en file d'attente de messages est refusé." message. Ne sais pas comment résoudre ce problème. Je suis avec Windows 7 comme système client et le serveur Windows 2008 R2 Server

39
demandé sur John Saunders 2012-03-26 19:04:46

11 réponses

j'ai rencontré le même problème en essayant d'écrire au MSMQ ASP.NET (Windows 7). J'ai ajouté les permissions" Receive Message "" Peek Message "et" Send Message " et cela fonctionne correctement maintenant. Si tu fais ça ASP.NET vous êtes probablement sur le compte IIS_IUSRS.

26
répondu Glade Mellor 2012-09-28 19:53:54

Si vous essayez de lire un message d'une file d'attente distante alors autorisations est le principal coupable, que kprobst mentionné.

vous pouvez aussi obtenir d'autres causes:

ne pas lire dans les files d'attente à distance MSMQ

7
répondu John Breakwell 2012-03-26 21:47:49

dans mon cas, les files D'attente MSMQ étaient détenues par mon propre compte D'utilisateur Windows (administrateur local), car elles avaient été créées à partir d'une application console depuis Visual Studio en mode administrateur.

My web-app fonctionne comme NETWORK SERVICE, qui a engendré le

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:

gestion des ordinateurs > Services et Applications > Message Queuing > Private Qeues > cliquez-Droit sur la file d'attente > Propriétés > Sécurité

Redémarrer le service MSMQ et IIS:

NET STOP MSMQ
NET START MSMQ
IISRESET
7
répondu Frederik Struck-Schøning 2015-10-21 07:34:50

Server 2008:

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

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

  3. Clic Droit [UrQueueName] -> Properties -> Security
    • mettez tout le monde sous contrôle total
    • Réglez la connexion anonyme au contrôle total.
  4. Informatique Management -> Services
    • redémarrez le service de mise en file d'attente.

Sous Windows 7 (Client): Créer une file D'attente 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)); 
5
répondu Harvard Chan 2016-10-27 07:08:42

il y a plusieurs raisons à cette erreur. L'un, cela pourrait être la sécurité. Vous devez vous assurer que le compte sous lequel votre application est en cours d'exécution a un accès en lecture/écriture à la file d'attente (ou un niveau de permission aussi élevé que vous avez besoin).

Deuxièmement, assurez-vous que si la file d'attente est transactionnel, vous utilisez le bon mode de transaction. Ou encore, si la file d'attente n'est pas transactionnelle, que vous ne tentez pas de passer un mode de transaction à elle lorsque vous lisez ou écrire.

4
répondu kprobst 2012-03-26 17:10:55

pour nous, c'est parce qu'un programme de test a créé la file d'attente...

Solution: supprimez la file d'attente et laissez-La être recréée par les bons processus fonctionnant sous les bonnes références.

2
répondu Cine 2014-08-19 08:43:00

cela pourrait devenir un problème frustrant. Dans mon scénario, l'exception a été levée sur BeginReceive (). J'avais une file d'attente de messages existante qui a été créée par un .Net 2.0 application et j'essayais de l'utiliser dans une autre application qui fonctionnait sur .Net 4.0. La solution était de supprimer le MSMQ (situé à C:\Windows\System32\msmq\storage\lqs ), et le recréer avec .Net 4.0.

0
répondu Houman 2014-06-17 04:14:09

dans notre cas, changer l'identité du Pool D'applications du service web qui invoque le Peek MSMQ a aidé avec ce problème qui a commencé à se produire après une migration de serveur.

nous avons dû changer L'identité de L'application Pool de "ApplicationPoolIdentity"à " NetworkService". Il a travaillé par la suite.

0
répondu FMFF 2014-11-21 15:48:43

Cela a fonctionné pour nous: Gestionnaire de serveur - > fonctions - > Mise en file D'attente des messages - > clic droit - > Propriétés - > Sécurité du serveur

décocher: "Désactiver le non-authentifiés d'appels RPC"

0
répondu saille 2015-11-03 04:12:25

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 original

... est frustrant, la file d'attente est listée dans la gestion du serveur sous les Files D'attente privées, mais je n'avais pas la possibilité de :

  • Delete => Permission denied
  • modifier la permission de sécurité => Permission denied
  • consulter les autres messages dans la file d'attente => Permission denied

la solution

  1. Créer une file d'attente manuellement (utilisé plus tard), nous allons l'appeler FA1
  2. Fermer Services: Message Queuing (+Adaptateur Écouteur Pour Net.Msmq)
  3. Ensuite, allez à System32/msmq/stockage/lqs
  4. trouver le dernier fichier pour FA1 (vérifier si c'est le bon fichier, chaque fichier ici peut être ouvert avec notepad) et ensuite copier la valeur de L'attribut Security
  5. trouver le fichier associé à la file d'attente d'édition, le coller la valeur copiée dans l'étape précédente
  6. supprimer le fichier associé à FA1
  7. ouvrir les deux services précédemment fermés
  8. Aller dans le Gestionnaire de Serveur

le message d'erreur ne doit plus apparaître

Mais... vous pourriez avoir un autre problème avec votre logiciel en essayant de Lire / Se 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 aux propriétés avancées de cette file d'attente et de définir le plein accès de contrôle à tout le monde (bien, peut-être que vous allez spécifier 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 dev).

0
répondu Micaël Félix 2016-09-22 16:23:10

veuillez vous connecter à votre gestionnaire de sever et vérifier vos propriétés de file d'attente de messages qui ont assigné "envoyer message" , "message de peek" et d'autres privilèges requis à L'utilisateur IIS ou à tout le monde ..

-1
répondu Dushmantha 2014-11-13 12:33:10