2017-09-21 45 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