Pregunta

Tengo una orquestación que utiliza un puerto de respuesta de solicitud de llamada a un servicio web y espera una respuesta. Esto está funcionando perfectamente.

Ahora estoy haciendo pruebas para controlar los errores y yo estoy llamando a un servicio web que lanza una división por cero excepción. La orquestación no captura la excepción como una excepción; actúa como si el error SOAP que estoy recibiendo de espalda es una cadena normal.

Sin embargo cuando probé este comportamiento sólo con un puerto de solicitud, que terminó en el bloque catch de la orquestación con la división por cero excepción. Necesito capturar la excepción servicio web también en los puertos de respuesta de solicitud y no sólo en el puerto de una manera.

¿Fue útil?

Solución

Este tipo de error que está viendo es porque hay un problema con la respuesta HTTP que viene del servicio web. BizTalk intenta analizar la respuesta recibida y dividirla en cabecera y el cuerpo y luego analizar la cabecera. Si la respuesta es HTTP con formato incorrecto, hace que este tipo de error. Se trata de utilizar la librbary SOAP para interpretar el mensaje de respuesta y explota becuase el mensaje es malo. La división por cero puede ocurrir porque no se pudo obtener con precisión la forma de longitud respuesta de la cabecera y luego scrogged algunos cálculos.

Me colocaría un analizador de paquetes en la línea (como NetMon) y ver lo que realmente está siendo enviado a BizTalk. Si no es compatible con HTTP (navegar por la especificación o encontrar un buen HTTP para los simulado), BizTalk puede reaccionar ONU predecible.

Lo mejor de la suerte.

Otros consejos

Su tener que jugar con las reglas primero!

Con el fin de capturar una excepción dentro de su sección Cobertura de BizTalk durante el uso de un puerto de petición-respuesta, es posible que tenga que hacer lo siguiente ...

  1. Establecer el reintento de recuento a 0 en el puerto de solicitud-respuesta física que se utiliza para aprieto.
  2. Activar la notificación de entrega de la bandera de 'Transmisión' en su puerto de solicitud-respuesta lógica dentro de la orquestación.
  3. detectar la excepción "System.Web.Services.Protocols.SoapException" y manejarlo como su favor.

Espero que esto ayude.

Referencias: Eche un vistazo a mi artículo en el proyecto de código Proyecto de Código

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top