工作流服务ReceiveAndSendReply无序调用超时

时间:2010-08-22 13:51:28

标签: workflow-foundation-4

我创建了一个示例工作流服务。我在无序调用它时遇到问题。以下所有接收活动具有相同的相关性。当工作流在GetData()上启动并且客户端尝试调用第4或第3个接收活动时,它会导致超时。我本以期待抛出一个

  

操作   '四| {http://tempuri.org/} IService'   在带有标识符的服务实例上   '04e7f5aa-5e01-47ac-8a6e-b20492c5ac19'   此时无法执行。   请确保操作   以正确的顺序执行   使用中的绑定提供   有序交货保证。

但是当我移出第二个接收活动并删除包含延迟的选择时,它工作正常并抛出预期结果。

投掷超时:

_http://img816.imageshack.us/img816/8344/receivetimeout.jpg

工作:

_http://img843.imageshack.us/img843/2371/receiveworking.jpg

谢谢, - 罗纳德

1 个答案:

答案 0 :(得分:0)

问题是由使用Receive和Delay活动组合时处理消息的方式引起的。基本上,只要您开始向混合添加延迟活动,工作流调度程序就会保留它无法处理的任何传入WCF消息,因为它假定它可能在Delay到期时能够处理。不完全是你在这些情况下寻找的行为,但就是这样。

现在最好的解决方法是不使用延迟活动,而是使用某些外部服务的Receive活动,该服务在过期时发送超时请求。