2011-04-11 54 views
1

民间, 我一直有一些WF4问题的麻烦。 Ron Jacobs在他的endpoint.tv网络直播(http://archive.msdn.microsoft.com/wf4BatchJob)中演示后,我正在为批量引擎/工作计划程序建模。在他的例子中,“工作分支”只是在一个while循环内计数。对于我的示例,我将消息发送到称为SampleEngine.xamlx的另一个工作流程,该工作流程将进行计数。每一次计数,这个工作流程都会回调到父级(JobScheduler.xamlx)并报告已完成的进度。这很好,我现在就可以开始工作 - 我可以在AppFabric仪表板和调用QueryProgress(调度程序工作流程中的发送/接收对)中安排工作并观察它的进度。WF4下的AppFabric工作流不能正确恢复后IISreset

问题是,当我执行iireset来模拟服务器故障或其他问题时,工作流程(sampleengine.xamlx和jobscheduler.xamlx)都会重新联机并显示为“进行中”。问题是他们都没有跟踪更多的事件 - 他们似乎在某个地方停滞不前。此外,它们都不会以与我通常看到WF服务响应时相同的方式响应服务消息,因为没有为工作流的当前状态安排接收活动。

我在世界各地添加了坚持不懈的活动,并确保在所有我的sendreply活动结束后坚持下去,但这并没有改变。

正如我所说的,我对Ron的示例所作的唯一更改是,我的工作分支不在while循环中 - 它将一条消息发送到子工作流(sampleengine.xamlx)以启动它。如果服务器在执行期间没有关闭,那么工作流程之间的相互关系都可以正常工作。

任何想到我需要在这里做什么,以便让工作流在IISreset之后离开的地方得到很好的体会。罗恩的样品一直在计算我的停止位置。

回答

0

确保在AppFabric配置中打开工作流的持久性存储。它没有默认启用。

+0

诀窍是我在不同的应用程序中使用了我的子工作流服务,并且忽略打开工作流持久性并为该服务“保持闲置状态”。 – 2011-04-11 15:19:17