2009-08-10 6 views
0

Nous avons un service WCF .net 3.5 existant avec lequel PreserveObjectReferences est défini sur true du côté serveur.Comment BizTalk 2006 R2 peut-il utiliser la réponse sérialisée d'un service WCF avec PreserveObjectReferences = true?

Lorsque PreserveObjectReferences est défini sur false BizTalk peut consommer la réponse.

Y at-il un moyen d'obtenir BizTalk pour consommer les charges utiles ... PreserveObjectReferences réponse des

PreserveObjectReferences se manifeste avec az: id se produit pour la première instance d'un objet et az: ref se produit pour toutes les occurrences d'objets suivants:

<b:xyz *z:Id="5"* i:type="abc">...</b:xyz> 
... 
<b:xyz *z:ref="5"* /> 
+0

Et que se passe-t-il? Qu'est-ce qui ne va pas? C'est un xml valide, après tout (même si ce n'est pas seulement l'arbre standard). Alors, quelles pauses? –

Répondre

0

BizTalk et JAX-B ont tous deux des problèmes avec le traitement de la charge utile pour différentes raisons. ID/IDREF sont des options de schéma XML prises en charge, mais chaque implémentation semble avoir des problèmes à les consommer.

Pour JAX-B lorsque les deux idref et nul = true est spécifié, il est incapable de marshall la charge utile en objets:

<b:xyz z:ref="5" nil="true" /> 

Suppression du néant = true ou la mise en conserve des références d'objet à false (non retour aa charge utile en utilisant la capacité de idref signifie que les codeurs Java peuvent fonctionner autour de cela.

BizTalk peut contourner ce problème en réhydratant le xml sans le soutien idref par des transformations xslt ou d'autres moyens.

Notre solution à la fois était de s'assurer que les références d'objets préservés étaient désactivées. les deux systèmes ont alors pu s'intégrer sans problème majeur.

0

Quelle était l'option configurée par PreserverObjectReferences lors de la génération de xsd? Les xsd sont générés à partir du service WCF c'est WSDL et si dans ce WSDL ces attributs supplémentaires ne sont pas définis BizTalk ne saura pas qu'ils existent et BizTalk lèvera une exception. Je ne sais pas avec certitude si le DataContractSerializer inclura ces attributs lors de la génération d'un WSDL. Si le DataContractSerializer n'inclut pas ces attributs lors de la génération d'un WSDL, vous devez modifier le xsd du message de réponse pour autoriser xs: any des attributs sur les éléments où ces attributs sont ajoutés.

+0

Merci Rob, nous allons essayer quand nous reviendrons à le revoir. – JTew

Questions connexes