Question

J'ai une orchestration qui utilise un port de réponse de demande d'appel à un service Web et d'attendre une réponse. Cela fonctionne parfaitement.

Je suis en train de faire des tests pour gérer les erreurs et je fais appel un service Web qui jette une division par zéro exception. L'orchestration ne saisit pas l'exception comme une exception; il agit comme si la faute SOAP je reviens est une chaîne régulière.

Cependant, quand je l'ai testé ce comportement avec seulement un port de demande, je me suis retrouvé dans le bloc catch de l'orchestration avec la division par zéro exception. Je dois attraper l'exception du service Web également dans les ports de réponse à la demande et non seulement sur le seul port à sens unique.

Était-ce utile?

La solution

Ce type d'erreur que vous voyez est parce qu'il ya un problème avec la réponse HTTP provenant du service Web. BizTalk tente d'analyser la réponse reçue et la diviser en-tête et le corps, puis analyser l'en-tête. Si la réponse est malformé HTTP, il provoque ce genre d'erreur. Il utilise le librbary SOAP pour interpréter le message de réponse et il explose becuase le message est mauvais. La division par zéro peut se produire parce qu'il ne pouvait pas obtenir avec précision la longueur de réponse forment l'en-tête puis scrogged quelques calculs.

Je mettrais un renifleur de paquets sur la ligne (comme NetMon) et voir ce qui est réellement envoyé à BizTalk. Si ce n'est pas HTTP compatible (voir les spécifications ou trouver un bon HTTP pour les nuls), BizTalk peut réagir un on pouvait s'y attendre.

Bonne chance.

Autres conseils

Votre devoir de respecter les règles d'abord!

Pour attraper une exception dans votre bloc de champ dans Biztalk lors de l'utilisation d'un port de demande-réponse, vous pourriez avoir à faire ce qui suit ...

  1. Définir la nouvelle tentative de comptage à 0 sur votre port demande-réponse physique que vous utilisez pour lier.
  2. Activer la notification de livraison drapeau à « transmis » sur votre port demande-réponse logique au sein de l'orchestration.
  3. Intercepter l'exception de « System.Web.Services.Protocols.SoapException » et le manipuler comme s'il vous plaît.

Espérons que cela aide.

Références: Jetez un oeil à mon article dans le projet de code projet

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top