2

我有一个使用相关性的长期运行的工作流服务。该服务的客户端快速连续发送两个请求。所有接收活动的消息模式都是单向的。绑定类型是basicHttp。第一个请求启动工作流,第二个请求执行与初始请求相关的特定操作。为了确保消息按顺序到达,我强制客户端休眠一段时间,以允许工作流发起请求并建立关联密钥。大多数情况下,对服务的请求都得到了成功处理。有时工作流程会因消息而失败

“InstancePersistenceCommand 的执行被中断,因为实例密钥 'xx' 未与实例关联。这可能是因为实例或密钥已被清理,或者因为密钥无效。如果消息,密钥可能无效它是由在错误的时间发送或包含不正确的相关数据生成的。”

该服务托管在 IIS 中,当前在一台服务器上运行。我有一个用 CanCreateInstance 标记的接收活动。此活动启动工作流,然后其他接收活动(位于挑选活动内)响应服务调用。在初始接收活动之后以及其他每个接收之后,我都有一个名为PromoteValue的活动,它通过提升的属性参与者来提升属性。该服务的持久化细节配置为timeToPersist="00:01:00" timeToUnload="00:00:00" hostLockRenewalPeriod="00:00:30

我是否需要将服务设置为使用 AllowBufferedReceive 并使用支持 ReceiveContext 的通道?我应该使用双向消息传递而不是一种方式,因此阻塞客户端,直到工作流可以完成初始请求。在调用客户端中的工作流之间使用睡眠是不可取的,但它可以防止错误发生。

4

1 回答 1

0

如果有人仍然遇到这个问题。我有几个工作流程启动并运行,一切正常,但不知何故,在我创建的新工作流程中,我错过了一步,无法弄清楚为什么我得到的实例与消息无关。

只需从http://msdn.microsoft.com/en-us/library/ff432975%28v=vs.100%29.aspx仔细检查6f

于 2014-04-14T10:43:00.277 回答