2017-09-21 44 views
0

我們有兩個序列的Windows工作流服務。在這兩個序列之間有延遲活動設置爲new TimeSpan(0,0,10)即10秒。延遲後不會喚醒Windows工作流程

MainSequence 
    Sequqnce_1 
    Delay 
    Sequqnce_2 

所以第一序列執行之後WF堅持到SQL Server,然後10秒後醒來做第二個序列。

這是過去3年的工作。但是突然(從昨天起)WF延遲

後醒來後停止我在web.config中,並在日誌中我看到啓用system.diagnistics以下

顯示名稱:「Sequence_1」,INSTANCEID:「2」在 '封閉' 狀態完成

活動 'System.Activities.Statements.Sequence',顯示名稱: 'MainSequence',INSTANCEID: '1' 安排孩子活動 'System.Activities.Statements.Delay',顯示名稱:'延遲'

之後,日誌中沒有任何內容。

當我檢查工作流程數據庫我看到 [System.Activities.DurableInstancing].InstancesTable入境不過我注意到PendingTimer是NULL

我不知道,如果PendingTimer NULL導致此問題,如果是,爲什麼WF是將其設置爲空?

更新1
原來我的同事跑了其在服務器上安裝了.NET 4.7在該服務器上的Windows Update。但是WF應用程序被設置爲目標框架4.5.1。 我不知道如果更新導致此問題

更新2

我啓用ETW跟蹤,看看怎麼回事什麼,我看到下面的異常

數據庫的版本不能被確定爲在System.Activities.DurableInstancing.SqlWorkflowInstanceStoreVersionTable中沒有找到行。此表應包含對應於它與創建或升級到

完全例外

System.InvalidOperationException,mscorlib程序, 版本= 4.0.0.0,文化框架的版本單行=中性, PublicKeyToken = b77a5c561934e089 的版本數據庫無法確定,因爲在 System.Activities.DurableInstancing.SqlWorkflowInstanceStoreVersionTable中找不到行。 此表應該包含一個單行,該行與其創建或升級爲 的框架的版本 相對應。在 System.Runtime.AsyncResult.End [TAsyncResult](IAsyncResult結果)在 System.Activities.DurableInstancing.SqlWorkflowInstanceStoreAsyncResult。端(IAsyncResult的 結果)在 System.Activities.DurableInstancing.PersistenceTask.CommandCompletedCallback(IAsyncResult的 結果)System.InvalidOperationException: 數據庫的版本不能被確定爲沒有行被發現在 System.Activities.DurableInstancing.SqlWorkflowInstanceStoreVersionTable 。 該表應該包含與創建或升級到的框架版本 相對應的單個行。在 System.Runtime.AsyncResult.End [TAsyncResult](IAsyncResult的結果)在 System.Activities.DurableInstancing.SqlWorkflowInstanceStoreAsyncResult.End(IAsyncResult的 結果)在 System.Activities.DurableInstancing.PersistenceTask.CommandCompletedCallback(IAsyncResult的 結果)

當我檢查System.Activities.DurableInstancing.SqlWorkflowInstanceStoreVersionTable時,它爲空。然而這張桌子一直是空的。這個問題是發生Development服務器上(我們跑了安裝.NET 4.7的Windows Update)

我們也有其他環境StagingProduction其中Windows更新尚未安裝。我這些服務器上檢查SqlWorkflowInstanceStoreVersionTable的確表是空的工作流卻運行正常,沒有任何問題,在這些服務器上

回答

1

你可能想通過這個鏈接,你的.NET框架的遷移

https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/runtime/4.6.2-4.7

+0

謝謝,這真的幫助我們理解了變化。基本上我的應用程序的目標框架是4.5.1。我們一直在服務器上安裝新的dot net框架。直到4.6.2,Window Workflow Foundation中沒有更新,所以一切正常。然而,4.7版本的Windows工作流程發生了變化。無論如何解決我的問題,我只是在SqlWorkflowInstanceStoreVersionTable – LP13

+0

sidenote上添加一行我在哪裏可以得到WWF的SQL腳本.NET 4.5.1 – LP13

+0

您可以在這裏找到WF SQL持久性腳本:C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ SQL \ en – ajawad987