Обработка исключений запроса-ответа оркестровки Biztalk

StackOverflow https://stackoverflow.com/questions/1589008

Вопрос

У меня есть оркестровка, которая использует порт ответа на запрос для вызова веб-службы и ожидания ответа.Это работает отлично.

Сейчас я выполняю тесты для обработки ошибок и вызываю веб-службу, которая выдает исключение с разделением на ноль.Оркестровка не улавливает исключение как исключение;это действует так, как если бы ошибка SOAP, которую я получаю обратно, была обычной строкой.

Однако, когда я протестировал это поведение только с портом запроса, я оказался в блоке catch оркестровки с исключением divide by zero.Мне нужно перехватить исключение веб-службы также в портах ответа на запрос, а не только на одностороннем порту.

Это было полезно?

Решение

Этот тип ошибки, который вы видите, вызван проблемой с HTTP-ответом, поступающим от веб-службы.BizTalk пытается проанализировать полученный ответ и разбить его на заголовок и тело, а затем проанализировать заголовок.Если ответ имеет неправильную форму HTTP, это вызывает такого рода ошибку.Он использует библиотеку SOAP для интерпретации ответного сообщения, и это приводит к сбою, потому что сообщение плохое.Деление на ноль может произойти из-за того, что он не смог точно получить длину ответа из заголовка, а затем ошибся с математикой.

Я бы разместил анализатор пакетов на линии (например, NetMon) и посмотрел, что на самом деле отправляется в BizTalk.Если он не совместим с HTTP (просмотрите спецификацию или найдите хороший HTTP для чайников), BizTalk может отреагировать непредсказуемо.

Желаю удачи.

Другие советы

Сначала вы должны играть по правилам!

Чтобы перехватить исключение в пределах вашего блока scope в Biztalk при использовании порта запроса-ответа, вам, возможно, придется выполнить следующее...

  1. Установите количество повторных попыток равным 0 на вашем физическом порту запроса-ответа, который вы используете для привязки.
  2. Установите для уведомления о доставке флага значение "Передано" на вашем логическом порту запроса-ответа в рамках оркестровки.
  3. Перехватите исключение "System.Web.Services.Протоколы.SoapException" и обработайте его по своему усмотрению.

Надеюсь, это поможет.

Ссылки:Взгляните на мою статью в code project Проект кода

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top