2017-09-21 2 views
0

두 개의 시퀀스가있는 Windows 워크 플로 서비스가 있습니다. 이 두 시퀀스 사이에는 지연 활동이 new TimeSpan(0,0,10) (10 초)으로 설정됩니다.지연 후 Windows 워크 플로가 깨어나 지 않음

따라서 첫 번째 시퀀스 실행 후 WF가 SQL 서버에 저장되고 10 초 후에 두 번째 시퀀스가 ​​실행됩니다.

이것은 지난 3 년 동안 작동했습니다. InstanceID에, 'Sequence_1': WF 지연

후 깨어 난 후 정지 (어제 이후)하지만 갑자기 나는

표시 이름 다음의 web.config와 내가 보는 로그에 system.diagnistics 활성화 '2'있다 '닫힘'상태로 완료

활동 'System.Activities.Statements.Sequence'표시 이름 : 'MainSequence'에서 InstanceID : '1'예정 자식 활동 'System.Activities.Statements.Delay'표시 이름 : '지연'

로그에 아무 것도 없습니다.

[System.Activities.DurableInstancing].InstancesTable의 항목 그러나 나는 PendingTimer가 NULL 눈치 내가 워크 플로 데이터베이스를 검사 할 때 내가 볼

이 문제를 일으키는 확실하지 NULL PendingTimer 경우 내가,하고 있는지 왜 WF가 null로 설정하는 것입니다? 1

UPDATE 내 동료가 서버에 닷넷 4.7 설치 해당 서버에 윈도우 업데이트를 실행 밝혀졌다. 그러나 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 result)에서 System.Activities.DurableInstancing.SqlWorkflowInstanceStoreAsyncResult입니다. System.Activities.DurableInstancing.PersistenceTask.CommandCompletedCallback에서 종료 (IAsyncResult를 결과) (IAsyncResult를 결과) System.InvalidOperationException : 데이터베이스의 버전이 더 행으로 결정되지 않을 수는 System.Activities.DurableInstancing.SqlWorkflowInstanceStoreVersionTable에 을 발견했다 . 이 테이블에는 생성되었거나 업그레이드 된 프레임 워크의 버전 에 해당하는 단일 행이 들어 있어야합니다. System.Activities.DurableInstancing.PersistenceTask.CommandCompletedCallback에서 System.Activities.DurableInstancing.SqlWorkflowInstanceStoreAsyncResult.End에서 System.Runtime.AsyncResult.End [TAsyncResult (IAsyncResult를 결과) (IAsyncResult를 결과) (IAsyncResult를 결과)에

System.Activities.DurableInstancing.SqlWorkflowInstanceStoreVersionTable을 체크하면 비어 있습니다. 그러나이 테이블은 항상 비어있었습니다.

우리는 또한 다른 환경 윈도우 업데이트가 아직 설치되지 않은 StagingProduction, 이 (우리가 .NET 4.7을 설치 한 윈도우 업데이트를 실행 한 경우)이 문제는 Development 서버에서 일어나고있다. 나는이 서버에 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 프레임 워크를 설치했습니다. Window Workflow Foundation에 4.6.2까지 업데이트가 없으므로 모든 것이 작동했습니다. 그러나 4.7에서는 Windows Workflow가 변경되었습니다. 어쨌든 내 문제를 해결하기 위해 방금 SqlWorkflowInstanceStoreVersionTable에 행을 추가했습니다. – LP13

+0

sidenote에서 .NET 4.5.1에 ​​대한 WWF의 SQL 스크립트를 얻을 수 있습니다. – LP13

+0

여기에 WF SQL 지속성 스크립트가 있습니다. C : \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ SQL \ en – ajawad987

관련 문제