Обработка исключений в Biztalk, которые не попадают в форму Scope

Давайте подумаем об оркестровке. Основные действия выполняются в пределах формы области действия с двумя связанными формами Catch Exception: 1 для System.Exception и 1 General Exception. Эта оркестровка использует "вспомогательную" библиотеку классов C#, а область действия / ловушка BizTalk ловит исключения, которые выдают в библиотеке, а также необработанные исключения, которые происходят внутри них.

Вопрос, который меня интересует, который я могу создать, заключается в следующем: скажем, версия вспомогательной библиотеки публикуется, и вдруг отсутствует метод, который ранее существовал, и оркестровка пытается вызвать его. Неизбежно MissingMethodException бросается, что, кажется, происходит, как только форма Scope достигнута.

MissingMethodException не пойман оркестровкой и поэтому сообщение приостановлено. Я понимаю, что при правильном тестировании это никогда не должно произойти, но я просто пытаюсь охватить все основы, если они произойдут (и на самом деле просто из любопытства).

Есть ли способ отловить эти исключения, или, так как это, кажется, происходит на уровне до вызова области?

2 ответа

Решение

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

Если вы посмотрите на прикрепленное изображение, мои вспомогательные библиотеки используются в форме выражения "ValidateWrapper", но оркестровка даже не делала этого до MissingMethodException вызывался (из-за отсутствия метода в библиотеке вспомогательных классов), форма "GeneralScope" не смогла перехватить MissingMethodException но как только я завернул GeneralScope в другую область, MissingMethodException был пойман этим и мог быть обработан.

Все это произошло потому, что я обновил ресурс класса помощника через консоль администратора BizTalk, чтобы компилятор не смог предупредить об отсутствующем методе... но, по крайней мере, теперь я знаю, что могу перехватить исключение, если это произойдет снова.

Вы должны знать, что исключения в оркестрации в BizTalk обрабатываются так же, как и в.NET: исключения всегда наследуются от базового класса System.Exception.

Например, у вас есть пользовательское MissingMethodException (которое наследуется от System.Exception), тогда вы можете либо перехватить MissingMethodException (чтобы иметь какие-либо конкретные данные), либо System.Exception. Оба будут запускать обработчик исключений System.Exception, если нет определенного обработчика исключений MissingMethodException.

Для получения дополнительной информации, я бы предложил прочитать http://www.codeproject.com/Articles/125470/Exception-Handling-for-C-Beginners

Оркестровки BizTalk ничем не отличаются от любых других исключений в.NET для этой части.

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

Другие вопросы по тегам