我有一个我在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异常,但仍然没有。因此,它要么在默默地失败,要么根本没有开始执行。我可能错过了一些简单的东西 - 任何想法?
答案 0 :(得分:1)
问题是Behaviors集合中的额外Behavior元素。我删除了第二个Behavior(名为WorkflowPersistence)并将其内容放在第一个Behavior中。然后,持久性开始起作用。