【问题标题】:WCF WF service correlation exceptionWCF WF 服务关联异常
【发布时间】:2011-05-11 13:31:01
【问题描述】:

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

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

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

【问题讨论】:

    标签: wcf service workflow-foundation


    【解决方案1】:

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

    问题是第二个消息在第一个 SendReply 过去之前就进来了。这导致相关初始化程序覆盖第一个需要使用的请求回复相关处理程序。似乎这就是导致上述异常的原因。我通过使 SendReply 立即发生来临时解决了这个问题,尽管当我有时间时,我会考虑使用多个 Correlation Handlers 来接收回复。 (基于某些消息 ID 的处理程序字典??)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多