WCF WF服务关联异常

时间:2011-05-11 13:31:01

标签: wcf service workflow-foundation

在WCF WF服务中处理来自Exchange Server的多个推送通知,我收到以下异常并且WF中止:

“关联处理程序的某些上下文未被正确使用”。在任何地方都没有关于此错误的文档可以看到。

完整讯息: System.ServiceModel.FaultException`1 [System.ServiceModel.ExceptionDetail]:关联处理程序的某些上下文未正确使用。确保运行时正确初始化了处理程序,并且工作流具有Send后跟Receive或ReceiveReply活动。 (Fault Detail等于ExceptionDetail,可能由IncludeExceptionDetailInFaults = true创建,其值为: System.InvalidOperationException:关联处理程序上的某些上下文未正确使用。确保运行时正确初始化了处理程序,并且工作流具有Send后跟Receive或ReceiveReply活动。    在System.Runtime.AsyncResult.End [TAsyncResult](IAsyncResult结果)    在System.ServiceModel.Activities.Dispatcher.ControlOperationInvoker.ControlOperationAsyncResult.End(Object []& outputs,IAsyncResult result)    在System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeEnd(MessageRpc& rpc)    在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage7(MessageRpc& rpc)    在System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet))。

1 个答案:

答案 0 :(得分:0)

好的,我明白这一点。长话短说,正在发生的事情是竞争条件,其中具有查询关联和请求 - 回复相关性的接收通过坐在do-while循环中处理具有相同相关ID的多个消息。目的是处理具有相同id的许多消息中的第一个消息,丢弃其余消息。第一条消息导致并行进程通过引发等待序列的标志(稍后发送回复)开始,而后续消息被丢弃(发送应答立即发生)。

问题是第二条消息是在第一个SendReply通过之前进入的。这导致相关初始化器覆盖第一个需要使用的请求应答相关处理程序。看来这就是造成上述异常的原因。我通过立即发生SendReply来暂时修复此问题,但是当我有时间时,我会考虑使用多个相关处理程序来接收回复。 (基于某些消息ID的处理程序字典?)