2013-06-11 48 views
1

我有一個在IIS中託管的WF4狀態機工作流。我正在嘗試添加持久性,並將以下內容添加到web.config中。在IIS中託管的WF4不會持久

<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> 

我也PeristBeforeSend屬性設置爲true對工作流的初始操作的SendReplyToReceive。調用初始操作後,InstancesTable中沒有任何內容。我也讓工作流程閒置,也沒有任何東西存在。事件日誌中沒有例外或條目。所有服務操作都正常運行。我可以從頭到尾運行工作流程而不會出錯。

我還將連接字符串中的數據源屬性的值設置爲我知道在嘗試連接時無法獲取Sql異常的東西,但仍然沒有任何結果。所以它要麼靜靜地失敗,要麼堅持不懈地開火。我可能錯過了一些簡單的東西 - 任何想法?

回答

1

問題是Behaviors集合中額外的Behavior元素。我刪除了第二個行爲(名爲WorkflowPersistence),並將其內容放在第一個行爲中。然後堅持開始工作。