Ich habe eine .net 4.0-Anwendung von net 3.5 portiert, die net.msmq auf einem Server 2008 x64 verwendet
Einrichtung
- net.msmq Dienst mit Adresse "net.msmq://localhost/private/msmqdataservice.svc"
- net.msmq Endung mit Adresse "net.msmq://localhost/private/msmqdataservice.svc"
- Warteschlange in MSMQ -> Name = "$privat \msmqdataservice.svc "
alles funktioniert jetzt in der Produktion mit .net 3.5.
Ich installierte .net 4.0 auf dem Server und erstellte eine neue Website für Staging auf der gleichen Box.
Die neue Staging-Msmq-Einrichtung lautet
- net.msmq Dienst mit Adresse "net.msmq://localhost/private/staging/msmqdataservice.svc"
- net.msmq endet mit der Adresse "net.msmq://localhost/private/staging/msmqdataservice.svc"
- Warteschlange in MSMQ -> Name = "$privat \staging /msmqdataservice.svc"
Eine weitere Warteschlange für eine andere Website erstellt.
Eine weitere Änderung, die ich mit der neuen Website vorgenommen habe, ist, dass es sich um eine andere Website in iis handelt, die auf eine andere IP-Adresse hört. Ich habe die net.msmq Bindung auf 'localhost' gesetzt. Auch die Hauptseite hat die gleiche Bindung für net.msmq -> 'localhost'. Ich denke, so sollte es auch sein. Bitte weisen Sie mich darauf hin, wenn Sie eine andere Konfiguration benötigen.
Das Problem ist, dass meine Anfragen in der Warteschlange landen, aber nicht von der Anwendung abgeholt werden, sondern einfach dort bleiben.
Im Protokoll gibt es keinen Hinweis auf einen Fehler. Das einzige, was ich in diesem Zusammenhang im Protokoll sehe, ist die Warnung "msmqactivation cannot discover queue". Obwohl diese Warnung habe ich nie richtig verstanden, da wir dies immer mit alles in Ordnung mit msmq in 3.5 gesehen haben.
Alles, was ich mir vorstellen kann, wird überprüft und ist korrekt.
- Der App-Pool der Anwendung wird als Netzwerkdienst ausgeführt und hat vollen Zugriff auf die Warteschlange.
- Der net.msmq-Aktivierungsdienst wird mit dem Netzwerkdienst ausgeführt
- Ich habe eine andere Namenskonvention für die Service-Url ausprobiert - mit demselben Ergebnis
Zusammenfassung
Bitte geben Sie einen Einblick in die Einrichtung mehrerer Sites mit net.msmq. Ich verwende net.msmq Bindung mit Wert = 'localhost' für beide Standorte. Ich denke, es ist die Identität des Maschinennamens.
Gibt es eine Möglichkeit, dieses Problem zu diagnostizieren?
Alles, was Ihnen sonst noch einfällt, kann helfen.
Wir mussten die Veröffentlichung gestern verschieben, da wir nach etwa 100 Arbeitsstunden nicht herausfinden konnten, was das Problem ist. Auch kann es nicht machen es brechen in meiner Entwicklung Maschine.
Editar
Das Problem war, dass nach dem Erstellen einer neuen Website die Namenskonvention nicht funktioniert wie
net.msmq Dienst mit der Adresse "net.msmq://localhost/private/staging/msmqdataservice.svc" net.msmq Endpunkt mit Adresse "net.msmq://localhost/private/staging/msmqdataservice.svc" Warteschlange in MSMQ -> Name = "$privat \staging /msmqdataservice.svc"
es funktionierte mit dem Dienstnamen net.msmq://localhost/private/msmqdataservice.svc
aber jetzt kann ich nicht zwei Sites haben, die genau denselben Endpunkt verwenden.
Gibt es eine Möglichkeit, denselben Endpunkt auf zwei verschiedenen Websites mit unterschiedlichen URLs und unterschiedlichen Warteschlangen auf demselben Rechner zu haben?