1

최근에 워크 플로 응용 프로그램에서이 예외가 발생하기 시작했습니다.DurableInstancing의 System.Runtime.CallbackException

System.Runtime.CallbackException, System.Runtime.DurableInstancing 버전 4.0.0.0 = 문화 = 중립 PublicKeyToken = 31bf3856ad364e35

사용자 콜백 예외가 발생했습니다. 예외 스택 및 내부 예외를 확인하여 실패한 콜백을 확인하십시오. 여기

public class WorkflowHost { private readonly List<string> _services = new List<string>(); private readonly Dictionary<string, WorkflowServiceHost> _hosts = new Dictionary<string, WorkflowServiceHost>(); public WorkflowHost(IList<string> serviceNames) { foreach (string serviceName in serviceNames) { _services.Add(serviceName); } } public void Start() { if (_hosts.Count > 0) { Stop(); } foreach(string serviceName in _services) { WorkflowService service = LoadService(serviceName); WorkflowServiceHost host = new WorkflowServiceHost(service); host.Faulted += new EventHandler(host_Faulted); try { host.Open(); } catch (Exception e) { Debug.WriteLine(e.Message); } _hosts.Add(serviceName, host); } } void host_Faulted(object sender, EventArgs e) { Debug.WriteLine("Service Faulted"); Start(); } public void Stop() { if (_hosts.Count > 0) { foreach (string serviceName in _services) { IDisposable host = _hosts[serviceName]; host.Dispose(); } _hosts.Clear(); } } private WorkflowService LoadService(String xamlxName) { string fullFilePath = Path.Combine(@"..\..\..\Services\Sales Funnel Workflow", xamlxName); WorkflowService service = XamlServices.Load(fullFilePath) as WorkflowService; if (service != null) { return service; } else { throw new NullReferenceException(string.Format("Unable to load service definition from {0}", fullFilePath)); } } } 

예외의 전체 스택 추적입니다 :

나는 다음 클래스에서 실행되는 Windows 서비스를 통해 내 서비스 호스트

<StackTrace> 
at System.ServiceModel.Channels.CommunicationObject.OnFaulted() 
at System.ServiceModel.Channels.CommunicationObject.Fault() 
at System.ServiceModel.Channels.CommunicationObject.Fault(Exception exception) 
at System.ServiceModel.Activities.Dispatcher.DurableInstanceManager.WaitAndHandleStoreEventsCallback(IAsyncResult result) 
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result) 
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously) 
at System.Runtime.AsyncResult.AsyncCompletionWrapperCallback(IAsyncResult result) 
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result) 
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously) 
at System.Runtime.DurableInstancing.InstanceHandle.WaitForEventsAsyncResult.Canceled() 
at System.Runtime.DurableInstancing.InstanceHandle.Free() 
at System.Activities.DurableInstancing.SqlWorkflowInstanceStoreLock.MarkInstanceOwnerLost(Int64 surrogateLockOwnerId) 
at System.Activities.DurableInstancing.SqlWorkflowInstanceStoreLock.MarkInstanceOwnerLost(Int64 surrogateLockOwnerId, Boolean hasModificationLock) 
at System.Activities.DurableInstancing.LockRenewalTask.HandleError(Exception exception) 
at System.Activities.DurableInstancing.PersistenceTask.CommandCompletedCallback(IAsyncResult result) 
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result) 
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously) 
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously, Exception exception) 
at System.Activities.DurableInstancing.SqlWorkflowInstanceStoreAsyncResult.StartOperation() 
at System.Activities.DurableInstancing.SqlWorkflowInstanceStoreAsyncResult.StartOperationCallback(Object state) 
at System.Runtime.ActionItem.DefaultActionItem.Invoke() 
at System.Runtime.ActionItem.CallbackHelper.InvokeWithoutContext(Object state) 
at System.Runtime.IOThreadScheduler.ScheduledOverlapped.IOCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) 
at System.Runtime.Fx.IOCompletionThunk.UnhandledExceptionFrame(UInt32 error, UInt32 bytesRead, NativeOverlapped* nativeOverlapped) 
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) 
</StackTrace> 
<ExceptionString>System.Runtime.CallbackException: A user callback threw an exception. Check the exception stack and inner exception to determine the callback that failed. ---&gt; System.ServiceModel.CommunicationObjectFaultedException: The communication object, System.ServiceModel.Activities.WorkflowServiceHost, cannot be used for communication because it is in the Faulted state. 
    at System.ServiceModel.Channels.CommunicationObject.Close(TimeSpan timeout) 
    at System.ServiceModel.ServiceHostBase.System.IDisposable.Dispose() 
    at Zeller.SalesFunnel.WorkFlow.Service.WorkflowHost.Stop() in C:\Projects\TFS\Zeller Corp Toolkit\Main\Toolkit\Services\ZSalesFunnelService\Zeller.SalesFunnel.WorkFlow.Service\WorkflowHost.cs:line 67 
    at Zeller.SalesFunnel.WorkFlow.Service.WorkflowHost.Start() in C:\Projects\TFS\Zeller Corp Toolkit\Main\Toolkit\Services\ZSalesFunnelService\Zeller.SalesFunnel.WorkFlow.Service\WorkflowHost.cs:line 30 
    at Zeller.SalesFunnel.WorkFlow.Service.WorkflowHost.host_Faulted(Object sender, EventArgs e) in C:\Projects\TFS\Zeller Corp Toolkit\Main\Toolkit\Services\ZSalesFunnelService\Zeller.SalesFunnel.WorkFlow.Service\WorkflowHost.cs:line 57 
    at System.EventHandler.Invoke(Object sender, EventArgs e) 
    at System.ServiceModel.Channels.CommunicationObject.OnFaulted() 
    --- End of inner exception stack trace ---</ExceptionString> 
<InnerException> 
<ExceptionType>System.ServiceModel.CommunicationObjectFaultedException, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType> 
<Message>The communication object, System.ServiceModel.Activities.WorkflowServiceHost, cannot be used for communication because it is in the Faulted state.</Message> 
<StackTrace> 
at System.ServiceModel.Channels.CommunicationObject.Close(TimeSpan timeout) 
at System.ServiceModel.ServiceHostBase.System.IDisposable.Dispose() 
at Zeller.SalesFunnel.WorkFlow.Service.WorkflowHost.Stop() in C:\Projects\TFS\Zeller Corp Toolkit\Main\Toolkit\Services\ZSalesFunnelService\Zeller.SalesFunnel.WorkFlow.Service\WorkflowHost.cs:line 67 
at Zeller.SalesFunnel.WorkFlow.Service.WorkflowHost.Start() in C:\Projects\TFS\Zeller Corp Toolkit\Main\Toolkit\Services\ZSalesFunnelService\Zeller.SalesFunnel.WorkFlow.Service\WorkflowHost.cs:line 30 
at Zeller.SalesFunnel.WorkFlow.Service.WorkflowHost.host_Faulted(Object sender, EventArgs e) in C:\Projects\TFS\Zeller Corp Toolkit\Main\Toolkit\Services\ZSalesFunnelService\Zeller.SalesFunnel.WorkFlow.Service\WorkflowHost.cs:line 57 
at System.EventHandler.Invoke(Object sender, EventArgs e) 
at System.ServiceModel.Channels.CommunicationObject.OnFaulted() 
</StackTrace> 
<ExceptionString>System.ServiceModel.CommunicationObjectFaultedException: The communication object, System.ServiceModel.Activities.WorkflowServiceHost, cannot be used for communication because it is in the Faulted state. 
    at System.ServiceModel.Channels.CommunicationObject.Close(TimeSpan timeout) 
    at System.ServiceModel.ServiceHostBase.System.IDisposable.Dispose() 
    at Zeller.SalesFunnel.WorkFlow.Service.WorkflowHost.Stop() in C:\Projects\TFS\Zeller Corp Toolkit\Main\Toolkit\Services\ZSalesFunnelService\Zeller.SalesFunnel.WorkFlow.Service\WorkflowHost.cs:line 67 
    at Zeller.SalesFunnel.WorkFlow.Service.WorkflowHost.Start() in C:\Projects\TFS\Zeller Corp Toolkit\Main\Toolkit\Services\ZSalesFunnelService\Zeller.SalesFunnel.WorkFlow.Service\WorkflowHost.cs:line 30 
    at Zeller.SalesFunnel.WorkFlow.Service.WorkflowHost.host_Faulted(Object sender, EventArgs e) in C:\Projects\TFS\Zeller Corp Toolkit\Main\Toolkit\Services\ZSalesFunnelService\Zeller.SalesFunnel.WorkFlow.Service\WorkflowHost.cs:line 57 
    at System.EventHandler.Invoke(Object sender, EventArgs e) 
    at System.ServiceModel.Channels.CommunicationObject.OnFaulted()</ExceptionString> 
</InnerException> 
</Exception> 

사람이 어떤 아이디어가 있습니까을 왜 이거 가져올거야?

답변

1

호스트에 오류가 발생하면 콜백에서 오류 처리기로 다시 시작하려고했습니다. 오류 처리가 완료되도록하고 호스트를 다른 방법으로 다시 시작해야합니다.

0

내부 예외 메시지 : 그것은 폴트 상태이므로

통신 개체 System.ServiceModel.Activities.WorkflowServiceHost가 통신을 위해 사용될 수 없다.

일반적으로 이전 예외의 결과입니다. 따라서이 일이 일어나기 전에 어떤 일이 일어나는지보아야합니다.