Frage

Ich habe eine Orchestrierung, die ein Request-Response-Port Aufruf an einen Web-Service und wartet auf eine Antwort verwendet. Dies funktioniert perfekt.

Ich mache jetzt Tests Fehler zu behandeln und ich rufe einen Web-Service, der eine Division durch Null Ausnahme auslöst. Die Orchestrierung fängt die Ausnahme nicht als Ausnahme; es wirkt, als ob die SOAP-Fehler, den ich zurück bin immer eine reguläre Zeichenfolge ist.

Allerdings, wenn ich dieses Verhalten getestet mit nur einer Anfrage Port, landete ich mit der Division durch Null Ausnahme im catch-Block der Orchestrierung auf. Ich brauche die Web-Service-Ausnahme auch in den Request-Response-Ports zu fangen und nicht nur auf der einen Weg Port.

War es hilfreich?

Lösung

Diese Art von Fehlern, den Sie sehen, ist, weil es ein Problem mit der HTTP-Antwort ist von dem Web-Service kommen. BizTalk versucht, den empfangenen Antwort zu analysieren und sie lösen sich in Kopf und Körper und dann den Header zu analysieren. Wenn die Antwort fehlerhafte HTTP ist, verursacht es diese Art von Fehlern. Es ist mit Hilfe der SOAP librbary die Antwortnachricht zu interpretieren und es sprengt becuase die Nachricht schlecht ist. Die Division durch Null kann passieren, weil es nicht genau die Antwortlänge Form der Header bekommen konnte und scrogged dann etwas Mathematik.

würde ich ein Paket-Sniffer auf der Linie platzieren (wie NetMon) und sehen, was tatsächlich an BizTalk gesendet werden. Wenn es nicht HTTP-kompatibel (die Spezifikation durchsuchen oder eine gute HTTP für Dummies finden), BizTalk un vorhersagbar reagieren können.

Viel Glück.

Andere Tipps

Sie haben zuerst von den Regeln zu spielen!

Um eine Ausnahme in Ihrem Umfang Block in Biztalk zu fangen, während einer Anfrage-Antwort-Port verwenden, können Sie die folgenden ...

zu tun haben,
  1. Stellen Sie die Wiederholungszählung auf 0 auf Ihrer physischen Anfrage-Antwort-Port, die Sie binden verwenden.
  2. Aktivieren Sie die Flagge Zustellbenachrichtigung zu ‚Übertragene‘ auf Ihrer logischen Anfrage-Antwort-Port innerhalb der Orchestrierung.
  3. Fangen Sie die „System.Web.Services.Protocols.SoapException“ Ausnahme und behandeln es als Ihre bitte.

Hope, das hilft.

Referenzen: Werfen Sie einen Blick auf meinem Artikel in Code-Projekt Code Project

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