2009-08-06 5 views
0

В FaultContract из моей службы WCF нет элементов datacontract; таким образом, когда услуга потребляется в BizTalk, сгенерированная схема не отображает никаких членов. Как обращаться с BizTalk?FaultException обработки в BizTalk

При использовании этой службы WCF с .NET-клиента реализация обеспечивает исключение вместе с библиотекой классов (объектов данных), и я поймаю ошибку этого типа исключения.

ответ

0

Я не уверен, что это возможно. Но чтобы заставить его работать, biztalk должен иметь доступ к dll с вашими объектами данных. Вы можете попробовать ссылаться на dll из вашего проекта biztalk.

+0

Я могу иметь BizTalk со ссылкой на эту сборку. Расскажите, пожалуйста, дальнейшую информацию о реализации ... например, как связать исключение исключения (порт) с этим типом/схемой исключения? – Muralidhar

0

Если вы потребляете услугу от оркестровки вы можете попробовать следующие шаги:

  1. Добавить представление XSD вашего FaultContract к проекту и использовать это как тип сообщения о вашей операции неисправности ,

  2. Добавить блок обработчика исключений для оркестровку, используя эту ошибку операцию как тип сообщения

  3. На вашем двухсторонним WCF SendPort перейти на вкладку Сообщения, а затем на «Въездной BizTalk Message Body» измените переключатель на Путь.

  4. На 'выражение тела пути' добавить что-то вроде этого:

    /* [имен-URI() = 'http://myservice.namespace/'] | [Локальное имя() = 'Ошибка']/* [локальное имя() 'Деталь' =]/*/*

Эти два XPaths разделяются символом '|' сделает адаптер в зависимости от того, что он получает, публикует либо правильный ответ службы, либо содержимое узла сведений, где находится WCF FaultContract. Это позволит дизассемблеру работать при попытке идентифицировать сообщение.

Побочным эффектом этого является то, что у вас возникнет проблема с улавливанием SOAP-сбоев в оркестровке, но это решается путем создания схематического представления ошибки SOAP (http://schemas.datacontract.org/2004/07/System.ServiceModel#ExceptionDetail) и использования этого в качестве второй операции отказа.

0

Я нашел выпуск. Наш веб-сервис возвращает ошибку XML в нижнем регистре. Поэтому правильный XPath равен

/*[local-name()='Fault']/*[local-name()='detail']/* 
+0

На самом деле это разница между SOAP 1.1 и SOAP 1.2 –

Смежные вопросы