在IIS中托管的WF4不会持续存在

时间:2013-06-11 20:48:06

标签: iis workflow-foundation-4

我有一个我在IIS中托管的WF4状态机工作流程。我正在尝试添加持久性并将以下内容添加到web.config。

<behaviors>
    <behavior>
        <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>

    <behavior name="WorkflowPersistence">
          <sqlWorkflowInstanceStore
                  connectionString="Data Source=.\SQLExpress;Initial Catalog=InstanceStore;Integrated Security=True;Async=true"
                  instanceEncodingOption="GZip"
                  instanceCompletionAction="DeleteAll"
                  instanceLockedExceptionAction="AggressiveRetry"
                  hostLockRenewalPeriod="00:00:30"
                  runnableInstancesDetectionPeriod="00:00:05" />

          <workflowIdle timeToPersist="00:00:05" timeToUnload="00:00:30"/>
    </behavior>
</behaviors>

我还在工作流初始操作的SendReplyToReceive上将PeristBeforeSend属性设置为true。调用初始操作后,InstancesTable中不会保留任何内容。我也让工作流程闲置,也没有任何东西。事件日志中没有例外或条目。所有服务操作都运行良好。我可以从头到尾运行工作流程而不会出错。

我还将连接字符串中数据源属性的值设置为我知道无效的值,以便在尝试连接时获取Sql异常,但仍然没有。因此,它要么在默默地失败,要么根本没有开始执行。我可能错过了一些简单的东西 - 任何想法?

1 个答案:

答案 0 :(得分:1)

问题是Behaviors集合中的额外Behavior元素。我删除了第二个Behavior(名为WorkflowPersistence)并将其内容放在第一个Behavior中。然后,持久性开始起作用。