11
votes

Exception de la file d'attente de message: la file d'attente n'existe pas ou vous n'avez pas suffisamment d'autorisations pour effectuer l'opération

à cette ligne de code, je reçois l'erreur comme je l'ai mentionné

J'ai déclaré MSMQ_Name en tant que chaîne comme suit xxx

 Entrez la description de l'image ici

Entrez la description de l'image ici


1 commentaires

Dans le panneau de la file d'attente de la gestion de l'ordinateur, tous les dossiers de la file d'attente sont dupliqués !!! Quelque chose est très étrange de votre machine.


6 Réponses :


14
votes

Pouvez-vous d'abord vérifier la file d'attente existant avec le nom 'Aspnetservice' à l'emplacement ci-dessous?

Gestion de l'ordinateur -> Services et applications -> Message Queuing -> File d'attente privées


3 commentaires

Pouvez-vous vérifier «Aspnetservice» en existe lorsque vous ouvrez «Message Queuing» en double-cliquez sur?


Dans le dossier «Private Quweues», vous devriez voir «Aspnetservice» dossier. Sinon, vous pouvez créer via un menu contextuel au dossier de files d'attente privées.


@Dorababu, développez le nœud de file d'attente des messages, puis des files d'attente privées UB-noeud et voyez si votre file d'attente existe ou non. Si la file d'attente existe alors, la question peut être liée à l'autorisation d'accès de la file d'attente et vous pouvez modifier cela à partir du clic droit -> Propriétés -> onglet Sécurité.



2
votes

Je faisais face au même problème, je l'avais résolu à utiliser la classe suivante pour créer une file d'attente xxx

Créer une file d'attente de message de la même manière pour recevoir le message.


0 commentaires

4
votes

J'ai eu un problème similaire. J'ai été confus parce que mon code a travaillé sur ma machine de développement local, mais pas en production. Même étranger, les files d'attente ont été créées exactement de la même manière.

Il s'avère que IIS ne les a pas accès par défaut. Je viens d'ouvrir les autorisations.

Gestion de l'ordinateur -> files d'attente privées -> Nom de la file d'attente de droite -> Propriétés -> Ofil de sécurité -> Cliquez sur "Tout le monde" Utilisateur -> Cliquez sur Contrôle complet / Cochez la case -> Cliquez sur OK

Cela résolue pour moi, et dans mon cas, ce n'est pas un problème, mais vous voudrez peut-être réfléchir aux ramifications de simplement l'ouvrir pour tous les utilisateurs.

En outre, je devais le faire dans toutes les files d'attente sur tous les serveurs. Il ne semble pas y avoir un moyen de sélectionner des files d'attente ou de dossiers multi-sélectionner afin de définir simultanément des autorisations pour plusieurs files d'attente simultanément.


0 commentaires

2
votes

J'avais le même problème.

J'avais créé une nouvelle file d'attente privée et j'ai donné une autorisation complète à tout le monde.

Mais je saisis toujours une "file d'attente n'existe pas ou que vous n'avez pas suffisamment d'autorisations pour effectuer l'opération" lors de la tentative de envoyer () à la file d'attente. Et j'ai pu vérifier que message usequeue.exists (". \\ privé $ \\ myqueue") renvoie true .

Redémarrer le service de file d'attente résolue mon problème pour moi.


0 commentaires

1
votes

J'ai eu le même problème et j'ai fait comme ci-dessous où je vérifie si la file d'attente existe ou non. Si oui, envoyez un message sinon créer une file d'attente, puis envoyez un message

 MessageQueue msgQueue = null;
        string queuePath = ".\\Private$\\billpay";

        Payment newPayment = new Payment()
        {
            Payee = txtPayee.Text,
            Payor = txtPayor.Text,
            Amount = Convert.ToInt32(txtAmount.Text),
            DueDate = dpDueDate.SelectedDate.Value.ToShortDateString()
        };

        Message msg = new Message();
        msg.Body = newPayment;
        msg.Label = "Gopala - Learning Message Queue";


        if (MessageQueue.Exists(queuePath) == false)
        {
            //Queue doesnot exist so create it
            msgQueue = MessageQueue.Create(queuePath);
        }
        else
        {
            msgQueue = new MessageQueue(queuePath);
        }            
        msgQueue.Send(msg);


0 commentaires

1
votes

Pour les autres qui luttent avec cela et en tirant leurs cheveux comme je l'ai été, j'ai enfin trouvé quelque chose qui fonctionne lorsque toutes les suggestions susceptibles ont échoué.

même si vous pensez que le nom d'hôte de votre file d'attente cible est en train d'être Résolu correctement, ne le croient pas fort>. Essayez de remplacer le nom d'hôte avec une adresse IP et voyez si cela fonctionne. Ça fait pour moi. Je peux écrire dans une file d'attente publique à l'aide d'un nom d'hôte sur mon serveur distant sans problème, mais essayer de lire exactement l'erreur répertorie pour cette question. P>

Par exemple, si je déclare ce qui suit: xxx pré>

où "myQueue" est une file d'attente publique sur un autre serveur, le code suivant insérera avec succès des messages à la file d'attente, mais échoue toujours sur la réception (): p>

private static string QueueName = @"FormatName:DIRECT=TCP:192.168.1.100\MyQueue";


1 commentaires

Avez-vous déjà travaillé ça? Nous avons un scénario où l'utilisation du vrai nom du PC fonctionne. Oeuvre IP fonctionne. Mais en utilisant un nom aliasé (par exemple, le fichier hosts) ne fonctionne pas.