Question

Ma machine est Windows 7 Édition Intégrale (64 bits). J'ai installé MSMQ et vérifié qu'il fonctionne bien (RAN quelques exemples de codes pour MSMQ).

Quand je tente de créer un service WCF en utilisant la classe MsmqIntegrationBinding, je reçois l'exception ci-dessous:

"Une erreur est survenue lors de l'ouverture de la file d'attente:... La file d'attente n'existe pas ou vous ne disposez pas des autorisations suffisantes pour effectuer l'opération (-1072824317, 0xc00e0003) Le message ne peut être envoyé ou reçu de la file d'attente Assurez-vous que MSMQ est installé et en cours d'exécution. Assurez-vous également que la file d'attente est disponible pour ouvrir le mode d'accès requis et l'autorisation. "

Je courais le studio visuel en mode Administrateur et accorde la permission de me explicitement via une URL en utilisant ACL: netsh http add url = http: // +: 80 / user = DOMAIN \ user

Voici le code:

 public static void Main()
    {         
        Uri baseAddress = new Uri(@"msmq.formatname:DIRECT=OS:AJITDELL2\private$\Orders");
        using (ServiceHost serviceHost = new ServiceHost(typeof(OrderProcessorService), baseAddress))

        {

            MsmqIntegrationBinding serviceBinding = new MsmqIntegrationBinding();
            serviceBinding.Security.Transport.MsmqAuthenticationMode = MsmqAuthenticationMode.None;
            serviceBinding.Security.Transport.MsmqProtectionLevel = System.Net.Security.ProtectionLevel.None;
            //serviceBinding.SerializationFormat = MsmqMessageSerializationFormat.Binary;
            serviceHost.AddServiceEndpoint(typeof(IOrderProcessor), serviceBinding, baseAddress);
            serviceHost.Open();

            // The service can now be accessed.
            Console.WriteLine("The service is ready.");
            Console.WriteLine("The service is running in the following account: {0}", WindowsIdentity.GetCurrent().Name);
            Console.WriteLine("Press <ENTER> to terminate service.");
            Console.WriteLine();
            Console.ReadLine();

            // Close the ServiceHostBase to shutdown the service.
            serviceHost.Close();
        }
    }

Pouvez-vous s'il vous plaît aider?

Était-ce utile?

La solution

Assurez-vous que vous avez créé la file d'attente « commandes » dans MSMQ.

Dans Windows Server 2008, vous pouvez le faire à partir du Gestionnaire de serveur (clic droit sur Poste de travail et sélectionnez Gérer), puis Caractéristiques -> Message Queuing -> Queues privé. Faites un clic droit sur Files d'attente privées et ajoutez votre file d'attente « commandes » là.

Vous pouvez également consulter l'article de Nicholas Allen: Diagnostiquer Erreurs courantes de file d'attente . Il suggère que votre erreur ne peut être: « que la file d'attente n'existe pas, ou peut-être que vous avez spécifié le nom de la file d'attente de manière incorrecte ». Tous les autres cas d'erreur auraient jeté une autre exception.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top