Domanda

Ho un servizio WCF con netMsmqBinding. Il mio cliente può inviare messaggi alla mia coda e quando il servizio è in funzione recupera i messaggi dalla coda come previsto. Se il servizio non è in esecuzione, i messaggi ricevuti vengono accodati fino a quando l'avvio del servizio.

Il mio problema è che il servizio non si avvia quando un messaggio colpisce la coda. Il servizio è ospitato in IIS, e quindi non viene creata un'istanza fino IIS riceve una richiesta. Se passo in rassegna al servizio allora elabora i messaggi nella coda, ma ovviamente questo non è il mio metodo desiderato di elaborazione della coda!

Mi aspetto che ho bisogno di cambiare l'implementazione del servizio, o modificare la configurazione di IIS, ma non so dove o cosa cambiare.

Aggiorna

C'è qualcuno che effettivamente utilizzare MSMQ su WCF? Ho avuto questo a lavorare per un breve periodo - ho attivato il legame su un diverso sito web sullo stesso server, stranamente -. Ma ora è in qualche modo smesso di funzionare di nuovo

L'unico problema che sto avendo è con l'attivazione del servizio quando c'è un messaggio nella coda. Attualmente la coda elabora solo quando il servizio è un'istanza, ad esempio quando navigo il file .svc. Ho il protocollo net.msmq abilitata sull'applicazione, e ho la net.msmq legame attivato sul sito ... C'è qualcos'altro che devo fare?

È stato utile?

Soluzione

È esplicitamente necessario configurare IIS per l'attivazione non HTTP. Non conosco tutti i dettagli della parte superiore della mia testa ma fondamentalmente è necessario utilizzare appcmd per configurare e abilitare l'attivazione vincolante net.msmq.

Controlla questo blogpost o questo screencast dovrebbe darvi tutti i dettagli.

Altri suggerimenti

Questo potrebbe salvare qualcuno le ore che mi ha portato: http://msdn.microsoft.com/en-us/library/ms731053. aspx

Credo che i miei problemi che utilizzano MSMQ vincolante su WCF erano principalmente intorno IIS.

ho avuto problemi a non finire che utilizzano Windows XP / Server 2003 con IIS 6.

Utilizzo di Windows 7 o Server 2008 con IIS 7.5 tutto funziona bene.

Una proposta ancora migliore è quello di eseguire MSMQ come un servizio gestito / Servizio di Windows o un'applicazione stand-alone piuttosto che sotto IIS.

Una possibilità è quella di ospitare questo come servizio di Windows. Poiché IIS non attiva automaticamente il WAS quando un messaggio viene inserito in una coda.
Un'altra opzione è quella di creare un semplice servizio delle finestre che ping questo servizio dopo l'intervallo di tempo specificato. Abbiamo esposto un altro contratto per lo stesso servizio, senza IsOneWay = true (dal momento che questa operazione non interagisce con le code). Poi creato un servizio di Windows che esegue il ping del URL del servizio WCF dopo un certo intervallo di tempo specificato, che assicura il WAS processo è sempre attivo e WCF raccoglie i messaggi non appena v'è un messaggio sulla coda.
Inoltre, assicurarsi che il servizio è anche ospitato su http e net.msmq sia.

mi sono imbattuto in un bell'articolo per una guida passo passo per l'attuazione di WCF con MSMQ utilizzando vincolante Net.Msmq:
href="https://dotnetwizardblog.wordpress.com/2016/05/02/msmq-with-wcf-service-netmsmqbinding/" MSMQ con WCF utilizzando Net.Msmq legame

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