Domanda

La mia macchina è Windows 7 Ultimate (64 bit). Ho installato MSMQ e controllato che si sta lavorando bene (correva alcuni codici di esempio per MSMQ).

Quando provo a creare una classe MsmqIntegrationBinding WCF Service utilizzando, ottengo l'eccezione di seguito:

"Si è verificato un errore durante l'apertura della coda:... La coda non esiste o non si dispone di autorizzazioni sufficienti per eseguire l'operazione (-1.072,824317 millions, 0xc00e0003) Il messaggio non può essere inviato o ricevuto dalla coda Verificare che MSMQ è installato e funzionante. assicurarsi inoltre che la coda è disponibile ad aprire con la modalità di accesso richiesto e autorizzazione ".

Sono in esecuzione il Visual Studio in modalità amministratore e concedere in modo esplicito il permesso a me stesso tramite un URL utilizzando ACL: netsh http aggiungere url = urlacl http: // +: 80 / user = DOMINIO \ utente

Di seguito è riportato il codice:

 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();
        }
    }

Potete per favore aiutare?

È stato utile?

Soluzione

Assicurati di aver creato la coda "Ordini" in MSMQ.

In Windows Server 2008, è possibile farlo da Server Manager (tasto destro del mouse su Risorse del computer e selezionare Gestione), quindi Caratteristiche -> Message Queuing -> Code private. Fai clic destro su Code private e aggiungere la coda "Ordini" lì.

Si consiglia inoltre di controllare l'articolo di Nicholas Allen: la diagnosi degli errori coda Comune . Essa suggerisce che l'errore non può che essere: "che la coda non esiste, o forse è stato specificato il nome della coda in modo non corretto ". Tutti gli altri casi di errore avrebbero gettato un'eccezione diversa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top