【问题标题】:Windows workflow 4.0 InstancePersistenceCommand ErrorWindows 工作流 4.0 InstancePersistenceCommand 错误
【发布时间】:2011-01-11 06:20:50
【问题描述】:

我有一个 wcf 工作流,其中包含三个按顺序排列的接收活动。即

1.接收申请 2.Manager1审批 3. 最终经理批准 我的问题是我能够从我的客户端应用程序中使用工作流并调用第一个(接收应用程序活动),但是当我尝试调用第二个(manager1 批准接收活动)时,我收到以下错误

InstancePersistenceCommand 的执行被中断,因为该实例 '16c3dae0-92f5-45e8-bdaf-d6f4051a0a39' 尚未持久化到实例存储中。

我检查了数据库(实例存储表)并且记录似乎存在。我还设置了 article 中指定的相关性 请帮忙,这很紧急

【问题讨论】:

    标签: .net-4.0 workflow-foundation workflow-activity


    【解决方案1】:

    我终于弄清楚了问题所在。我花了三天时间。

    我只需要添加以下内容:

    <serviceBehaviors>
      <behavior>
        <workflowIdle timeToUnload="0"/>
      </behavior>
    </serviceBehaviors>
    

    您可以在此article 获取更多详细信息。

    注意:我的工作流程获得了 1 分钟的默认 timeToUnload 值(来自机器配置)。这意味着当我在工作流中调用下一个接收活动时,工作流仍在内存中。 (真的很奇怪)

    【讨论】:

    • 内存中的工作流没有问题,只会加快速度。或者您使用的是服务器场,而第二个请求是否来自不同的服务器?
    【解决方案2】:

    GUID 是否正确?有时,如果 WF4 运行时找不到现有的 GUID,它会生成一个新的 GUID,从而导致一些令人困惑的错误消息。更改命名空间也会阻止相关查询。因此,如果您这样做了,您需要重新创建它们,或者进入 XAML 并修复它们。

    【讨论】:

    • Guid 与数据库中的一致
    • “改变命名空间”是什么意思
    • 每个 SOAP 服务以及 WF 服务都使用名称空间作为其名称的一部分。您可以更改这些,这可能会导致问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多