Frage

ich einen WCF-Dienst mit NetMsmqBinding haben. Mein Client kann Nachrichten an meine Warteschlange senden, und wenn der Dienst läuft, ruft er Nachrichten aus der Warteschlange wie erwartet. Wenn der Dienst nicht ausgeführt wird, empfangene Nachrichten, bis der Dienst gestartet wird die Warteschlange gestellt.

Mein Problem ist, dass der Dienst nicht gestartet wird, wenn eine Nachricht in die Warteschlange trifft. Der Dienst wird in IIS gehostet wird, und so ist es nicht instanziiert, bis IIS eine Anforderung empfängt. Wenn ich in den Dienst wechseln Sie dann verarbeitet sie die Nachrichten in der Warteschlange, aber offensichtlich ist dies nicht meine gewünschte Methode, um die Warteschlange zu verarbeiten!

Ich gehe davon aus, dass ich die Service-Implementierung zu ändern oder die IIS-Setup ändern, aber ich weiß nicht, wo oder was zu ändern.

UPDATE

Hat jemand tatsächlich MSMQ über WCF verwenden? Ich hatte dies für eine kurze Zeit arbeiten - ich aktivierte die Bindung an einer andere Website auf dem gleichen Server, bizarr -. Aber jetzt hat es irgendwie wieder gestoppt Arbeits

Das einzige Problem, das ich habe, ist mit der Aktivierung des Dienstes, wenn eine Nachricht in der Warteschlange befindet. Derzeit verarbeitet die Warteschlange nur dann, wenn der Dienst instanziiert wird, z.B. wenn ich zu sehen, die die SVC-Datei. Ich habe das net.msmq Protokoll über die Anwendung aktiviert ist, und ich habe die net.msmq auf der Site aktiviert Bindung ... ist es etwas, was ich tun muss?

War es hilfreich?

Lösung

Sie müssen explizit configure IIS für nicht HTTP-Aktivierung. Ich habe nicht alle Details der Spitze von meinem Kopf weiß, aber im Grunde müssen Sie appcmd zu konfigurieren verwenden und die net.msmq Bindungsaktivierung zu ermöglichen.

Überprüfen diese Blogpost oder diese Screencasts sollten Sie alle Details.

Andere Tipps

Dies könnte sparen jemand die Stunden es hat mich: http://msdn.microsoft.com/en-us/library/ms731053. aspx

Ich glaube, dass meine Probleme mit MSMQ über WCF Bindung waren in erster Linie um IIS.

Ich hatte kein Ende der Probleme mit Windows XP / Server 2003 mit IIS 6.

Mit Windows 7 oder Server 2008 mit IIS 7.5 alles gut funktioniert.

Ein noch besserer Vorschlag ist MSMQ als Managed Service / Windows-Dienst oder Stand-alone-Anwendung auszuführen, anstatt unter IIS.

Eine Möglichkeit ist, das als Windows-Dienst zu hosten. Da IIS aktiviert nicht automatisch WAR das, wenn eine Nachricht in einer Warteschlange platziert wird.
Eine weitere Möglichkeit ist es, eine einfache Windows-Dienst, der Pings diesen Dienst nach bestimmten Zeitintervall zu erstellen. Wir ausgesetzt einen weiteren Vertrag über den gleichen Dienst, ohne IsOneWay = true (da dieser Vorgang nicht interact mit Warteschlangen). Dann einen Windows-Dienst erstellt, die Pings die WCF-Dienst-URL nach einigem bestimmten Zeitintervall, das der Prozess war gewährleistet, ist immer aktiv und WCF nimmt die Nachrichten, sobald eine Nachricht in der Warteschlange ist.
Außerdem sorgt der Dienst auch gehostet auf http & net.msmq beide.

Ich kam in einem schönen Artikel für einen Schritt für Schritt Anleitung zur Implementierung WCF mit MSMQ mit net.msmq Bindung:
Setup-MSMQ mit WCF net.msmq Bindung

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top