2009-09-01 5 views
1

J'ai un schéma "envelope" et un schéma de corps et j'ai configuré les propriétés correctes sur le "enveloppe" pour pointer sur le corps. J'ai aussi un schéma de propriété pour promouvoir une valeur dans le corps du message afin que je puisse l'acheminer.La promotion de propriété ne se passe pas dans Wcf recevoir emplacement

Je définis un emplacement de réception de fichier et deux ports d'envoi. Chaque port d'envoi s'abonnant à une valeur différente de la propriété promue. L'emplacement de réception utilise XmlReceive et les ports d'envoi utilisent XmlTransmit. Lorsque je dépose un message d'enveloppe à l'emplacement Rcv, Bts le récupère, le divise, fait la promotion de la propriété et mes ports d'envoi récupèrent les messages pertinents et font leur travail.

La chute de fichier était bonne pour les tests, mais le scénario réel est légèrement différent. Je veux aux clients de soumettre des schémas « enveloppe » contenant plusieurs éléments de document via WCF

donc je publiais le schéma d'enveloppe en tant que point de terminaison WCF en utilisant l'assistant de publication. Laissez-le créer le nouvel emplacement de réception. Câblé un client Wcf pour parler à ce point de terminaison et soumis un message.

Sans rien changer sur les ports d'envoi dans BizTalk je m'attendais au même résultat; Cependant, je reçois maintenant un échec de routage.

Si je supprime le filtre supplémentaire dans le port d'envoi qui filtre sur la propriété promue il fonctionne, pas d'échec de routage. Donc, il semblerait que la promotion de ma propriété ne se passe pas sur l'emplacement de réception Wcf. J'ai vérifié; l'emplacement de réception Wcf utilise XmlReceive.

Ce qui donne? Comment résoudre ce problème?

+0

Quels sont les autres filtres que vous avez sur les SendPorts? – magnus

+0

Cela semble étrange. Si vous supprimez le filtre, comment BTS sait-il où envoyer le message entrant? Je pensais que le message resterait dans la boîte de message et vous obtenez une erreur de routage car il n'y a pas d'abonnement sans filtre. Hmm, je vais essayer moi-même. –

+0

Je suppose qu'il a deux filtres. Un pour BTS.ReceivePortName == XXX && HisOwn.Promoted.Propoerty == xxx. – magnus

Répondre

0

Je suppose que l'espace de noms de votre message entrant a changé à la suite de son changement pour utiliser WCF.

La promotion de la propriété ne peut plus correspondre au message entrant.

Vous pouvez afficher les promotions de propriété dans les messages suivis dans les outils d'administration du serveur BizTalk.