2009-08-06 28 views
0

Le FaultContract de mon service WCF n'a pas de membres de contrat de données; Ainsi, lorsque le service est consommé dans BizTalk, le schéma généré n'affiche aucun membre. Comment gérer BizTalk?Gestion de FaultException dans BizTalk

Lors de la consommation de ce service WCF à partir d'un client .NET, l'implémentation fournit l'exception avec la bibliothèque de classes (d'objets de données) et j'attrape la faute de ce type d'exception.

Répondre

0

Je ne sais pas si c'est possible. Mais pour le faire fonctionner, biztalk doit avoir accès à la DLL avec vos objets de données. Vous pourriez essayer de référencer la DLL de votre projet biztalk.

+0

Je peux demander à BizTalk de se référer à cet assembly. Pourriez-vous me guider davantage sur l'implémentation ... comme comment lier l'exception fault (port) à ce type/schéma d'exception? – Muralidhar

0

Si vous consommez le service d'une orchestration, vous pouvez essayer les étapes suivantes:

  1. Ajouter une représentation XSD de votre FaultContract au projet et utiliser ce que le type de message sur votre opération faute .

  2. Ajouter un bloc de gestionnaire d'exception à l'orchestration en utilisant ce défaut opération type de message

  3. Sur vos deux voies WCF SendPort aller à l'onglet Messages, puis sur « Inbound BizTalk Corps du message » Modifiez le bouton radio sur Chemin.

  4. sur 'chemin Body expression' ajouter quelque chose comme ceci:

    /* [namespace-uri() = 'http://myservice.namespace/'] |/* [Local-name() = 'Défaut']/* [local-name() 'Détail' =]/*

Ces deux XPath séparés par un '|' fera en sorte que l'adaptateur, en fonction de ce qu'il reçoit, publie la réponse de service correcte ou le contenu du noeud de détails qui est l'emplacement du WCF FaultContract. Cela permettra au désassembleur de fonctionner en essayant d'identifier le message. Un effet secondaire de ceci est que vous rencontrerez un problème pour attraper les fautes SOAP dans l'orchestration, mais cela est résolu en créant une représentation schématique d'une erreur SOAP (http://schemas.datacontract.org/2004/07/System.ServiceModel#ExceptionDetail) et l'utilisez comme une seconde opération de panne.

0

J'ai trouvé le problème. Notre service Web renvoie le défaut XML en minuscules. XPath est donc correct

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

Il s'agit en fait d'une différence entre SOAP 1.1 et SOAP 1.2 –

Questions connexes