Eccezione nella creazione di un servizio WCF utilizzando MsmqIntegrationBinding
-
21-09-2019 - |
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?
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.