当开始工作流时,发现某一工作流实例没能按照画定的流程图正常运行,而是运行到一半时自动关闭.
由于初学WF,没太多经验,看了好几篇高手介绍WF异常处理的文章,
照葫芦画葫芦得加上了FaultHandlerActivity,ThrowActivity 等,但就是怎么弄也找不到出错的这个Exception,超级郁闷,还是第一次找个Exception找了那么久都找不到的.
后来看到一文介绍:
如果异常没有被处理并且传播到工作流之外,那么WF Runtime将捕获它,接着终止工作流并抛出WorkflowTerminated事件.Runtime会在WorkflowTerminated事件的参数中包含异常的信息.
终于帮到了大忙,这样应该可以找到了吧,在定义RUNTIME那里加上:
workflowRuntime.WorkflowTerminated += new EventHandler<WorkflowTerminatedEventArgs>(workflowRuntime_WorkflowTerminated);
static void workflowRuntime_WorkflowTerminated(object sender, WorkflowTerminatedEventArgs e)
{
Console.WriteLine("workflow实例已终止,原因:'{0}'。",e.Exception.Message);
}
马上运行,终于找到这个Exception了,而出错的原因是因为我用了实现[DataContract]的类型,但赋给它的变量没加序列化的标签而引起的,超级郁闷,马上加上,运行工作流,整个流程顺利跑完!!!!
哎,如果早点发现就好了,搞了2天去查这个错误到底是什么错,真是超级郁闷.
或许是学习WF还不够深入的原因吧.
把这次的教训经验写一下,希望能给别人也有所帮助.不用像我那样花2天去找这个BUG.
浙公网安备 33010602011771号