Débogage des erreurs d'exécution d'une orchestration
Cette section présente un certain nombre de questions et réponses conçues pour vous aider à résoudre les problèmes d'exécution liés aux orchestrations.
Pourquoi est-ce que j'obtiens des erreurs d'abonnement intermittentes lors de l'envoi vers une orchestration enfant venant juste d'être démarrée par le parent ?
L'erreur d'abonnement « abonnement introuvable » résulte d'une condition d'engorgement. Une condition d'engorgement se produit lorsque le résultat d'un traitement dépend de l'ordre spécifique dans lequel est effectué le traitement. Dans ce cas, la condition se produit lorsque l'orchestration enfant n'a pas été démarrée à temps pour recevoir le message envoyé par le parent.
Pour éviter ce problème, l'orchestration enfant peut renvoyer un message au parent une fois qu'elle est démarrée et prête à recevoir un message. Ainsi, l'orchestration parent l'ayant lancée sait qu'il existe un destinataire avant d'envoyer un message.
Pourquoi est-ce que j'obtiens des erreurs lorsque j'associe un port d'envoi dynamique à un port logique ?
La conception d'un port dynamique ne lui permet pas d'hériter de tous les attributs et caractéristiques du port qui lui est associé. Un port dynamique obtient uniquement une adresse, il n'hérite pas des autres informations associées au port logique.
Par exemple, si vous associez un port d'envoi dynamique à un port logique avec Accusé de réception = Transmis, le composant d'exécution ne renverra pas d'accusé de réception. Le composant d'exécution XLANG recherche un accusé de réception uniquement si le port a été configuré à cet effet de manière statique.
Notes
Dans les XLANG, les ports se comporteront uniquement comme s'ils avaient été configurés de manière statique.
Lorsque je tente d'exécuter mon application après avoir déployé une orchestration avec des composants personnalisés, pourquoi est-ce que j'obtiens l'erreur « Nom de fichier ou d'assembly ou une de ses dépendances introuvable »?
Cette erreur signifie généralement que le moteur d'orchestration BizTalk ne trouve pas le composant personnalisé. Vous devez installer tous les assemblys inclus dans une application BizTalk dans le GAC de l'ordinateur hébergeant l'application.
Une erreur « Propriété de contexte AssemblyName non valide » se produit lors de la soumission d'un document à un service Web via une orchestration
Problème
La soumission d'un document à un service Web via une orchestration entraîne une erreur « Propriété de contexte AssemblyName non valide ».
Cause
L'application BizTalk a été conçue à l'origine avec une approche « messagerie », sans intervention d'une orchestration. Ce type de solution utilise un filtre sur le port d'envoi pour lier le port de réception et le port d'envoi de sorte que le document est transféré au port d'envoi à réception. Par la suite, la solution a été modifiée afin d'inclure une orchestration liée au port d'envoi.
Résolution
Supprimez le filtre sur le port d'envoi. Si vous appliquez un filtre à un port d'envoi lié à une orchestration, les messages vont souvent contourner l'orchestration et provoquer l'erreur de propriété de contexte.
Une erreur « WrongBodyPartException » se produit lors du traitement d'un message MIME en plusieurs parties dans une orchestration
Problème
La réception d’un message MIME en plusieurs parties dans une orchestration entraîne une exception WrongBodyPartException .
Cause
Cette erreur peut survenir si l'ordre des parties est spécifié de manière incorrecte ou si les messages ne respectent pas les positions des parties que vous avez spécifiées. Par exemple, si vous avez indiqué que la troisième partie correspond au corps du message, mais que les messages comportent une partie en-tête en troisième position.
Résolution
Vérifiez que le paramètre d'indexation des parties est correct et assurez-vous que tous les messages arrivant par le biais de cet adaptateur sont conformes au paramètre. Vous pouvez étudier le contenu des messages MIME ayant échoué dans une orchestration en arrêtant l'orchestration (tout en la gardant inscrite) ; cela aura pour effet de forcer la publication du message et vous pourrez le consulter en utilisant la console Administration et vérifier ainsi l'ordre des parties.
Une partie d'un message MIME à plusieurs parties est introuvable
Problème
Les tentatives de récupération d’un composant de message MIME avec une valeur d’index supérieure à 0 entraînent le BizTalk Server runtime qui génère une erreur similaire à « Impossible de trouver le message en plusieurs parties avec index = <valeur> ».
Cause
Les principales causes de cette erreur sont les suivantes :
Le message MIME compte moins de parties que prévu.
Le message MIME n'a pas pu être analysé complètement.
Résolution
Vous pouvez résoudre ce problème en vous assurant que votre code n'extrait que les parties de message comprises dans la plage attendue à partir de la source du message. Dans le cas d'un problème d'analyse, vérifiez que la structure du message MIME d'origine est correcte et qu'il est construit de manière appropriée. Si vous prévoyez des erreurs d'analyse occasionnelles, assurez-vous que votre orchestration dispose des gestionnaires d'exception appropriés.
Vous recevez l'erreur « L'adaptateur d'envoi FILE ne peut pas ouvrir le fichier pour écriture » lors d'un envoi à l'aide d'un port d'envoi dynamique
Problème
Vous recevez une erreur « L’adaptateur d’envoi FILE ne peut pas ouvrir le nom de fichier<> pour l’écriture » dans le journal des événements BizTalk Server lors de l’envoi à l’aide d’un port d’envoi dynamique.
Ce problème se produit lorsque le BTS. La propriété OutBoundTransportLocation est définie dans une expression d’orchestration et le transport de fichiers est spécifié. Par exemple, les expressions suivantes provoquent cette erreur au moment de l’exécution :
Message2=Message1;
Message2(BTS.OutboundTransportLocation) = "file:///c:/test/out";
MySendPort(Microsoft.XLANGs.BaseTypes.Address)=Message2(BTS.OutboundTransportLocation);
- Ou -
Message2=Message1;
Message2(BTS.OutboundTransportLocation) = "file://mymachine/test/out";
MySendPort(Microsoft.XLANGs.BaseTypes.Address)=Message2(BTS.OutboundTransportLocation);
Cause
Ce problème se produit car au moment de l’exécution, le moteur d’orchestration supprime le texte « file:// » de l’URL spécifiée. Dans les exemples précédents, "file:///c:/test/out" est évaluée comme \c:\test\out et "file://mymachine/test/out" est évaluée comme mymachine\test\out.
Résolution
Lors de la spécification de l’URL du BTS. Propriété OutBoundTransportLocation dans une expression, ajoutez ou supprimez des caractères « / » si nécessaire. En utilisant les exemples au-dessus du BTS. La propriété OutBoundTransportLocation doit être définie comme « file://c:/test/out », ce qui correspond à c :\test\out ou « file:////mymachine/test/out », qui correspond à \\mymachine\test\out.