Workflow Foundation: la galère des FaultHandler(s)
Ca fait un peu plus d’une petite semaine que je me suis lancé dans le Windows Workflow Foundation (WF et non WWF ^^), qui est pour moi, ma 1er partie de ma decouverte de .NET 3.0 🙂
Je suis entrain de terminer mon article ainsi qu’un Webcast sur une introduction à WF qui devrait être finalisé ce weekend…
En préparant mon Webcast je me suis heurté à un problème avec l’Activity FaultHandler ! Cette activité permet de recupérer les exceptions survenu dans l’execution de votre workflow…
Mon workflow possédait un CodeActivity qui été sensé travailler avec un XmlDocument representant la response d’un Webservice. Mais voila que dans certains cas mon code pouvait lever l’exception XmlException..
J’ai donc placé dans le « Fault View » du designer, un FaultHandler qui checké l’exception XmlException pour executer un CodeActivity qui ecrivait un petit message « Bug :-))) » ^_^
Mais lorsque je provoquais volontairement l’exception lors de l’execution de mon workflow, celle ci n’etait pas du tout géré par mon FaultHandler et on me renvoyait dans mon code sous VS2005 avec un petit message « XmlException was unhandled by user code » 🙁
A partir de là, grosse perte de temps à chercher dans tous les sens sur les peu de sites qui parle de WF…. La solution est en fait toute bête ^^
En effet, VisualStudio est prioritaire sur les FaultHandlers.. C’est à dire que quand votre Workflow est executé en mode debug sous VS2005, en cas d’exception ce n’est pas le FaultHandler qui repondra mais VS2005. Si maintenant vous executez votre application hors contexte VS2005, là vous aurez bien le FaultHandler qui prendra la main 🙂
Chose dîte, je retourne sur mon Webcast : Que du bonheur 😀
Dahmani Ryad
Bonjour et merci pour cette info, cela fait deux jours que je galère :'( mais je me pose une question la, n’y aurai t-il pas une façon de voir ses propres Faults exécutés sans quitter VS???
Si on va dans Debug–>Exceptions et qu’on désactive CLR Exceptions cela permet de faire une exécution pas à pas 🙂 mais cela désactive toutes les exceptions 🙁
je pense qu’il n’est pas nécessaire de faire cela pour toutes les exceptions mais pour celle qu’on génère seulement
si quelqu’un a une info merci de partager