繁体   English   中英

是什么导致WF4抱怨不正确的呼叫?

[英]What can cause WF4 to complain about out-of-sequence calls improperly?

我有一个(漂亮的)简单工作流程。 工作流的前三个动作是:

  1. GetWorkflowId(检索工作流ID的简单自定义步骤)
  2. InitializeCorrelation(香草)
  3. 接收Xyz

工作流中总共有9个接收。 当我在单元测试中(使用WorkflowServiceTestHost)对它们全部进行处理时,它就可以正常工作。

但是,当我尝试从客户端调用第一个接收入口点(Xyz)时,出现以下错误:

目前无法在标识符为'ffd6c56d-529f-4f42-ba81-f30c5ea9348d'的服务实例上执行操作'Xyz | { http://tempuri.org/ } IService'。 请确保以正确的顺序执行操作,并确保使用中的绑定提供有序的交付保证。

我已经尝试了各种各样的方法来获取有关此的更多信息,但空无一物。 我有一个SQL Server持久性数据库,并已对其进行工作流实例检查,但是InstancesTable始终为空。

我开始怀疑我是否遇到了WF4中的错误。

显示的错误是虚假的并且具有误导性。 真正的错误是

System.NotSupportedException:表达式活动类型'CSharpValue`1'需要进行编译才能运行。 请确保工作流程已编译。

启用WF跟踪时找到的内容(请参阅链接 )。 通过查看相关问题, 使用C#表达式Activity的 XAMLX工作流 在C#表达式使用引用类型时引发异常,我意识到,由于我已经覆盖了WorkflowServiceHostFactory ,因此现在必须显式编译C#表达式。 这样做可以解决问题。

结果看起来像这样:

 public override ServiceHostBase CreateServiceHost(string constructorString, Uri[] baseAddresses)
 {
     var result = new WorkflowServiceHostFactory().CreateServiceHost(constructorString, baseAddresses) as WorkflowServiceHost;
     WorkflowUtilities.CompileExpressions(result.Activity);
     return result;
 }

其中WorkflowUtilities是我在其中放置从其他位置粘贴的代码以进行表达式编译的类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM