Frage

Ich verwende derzeit eine BehaviorExtensionElement eine ServiceBehavior zu laden, wo die ApplyDispatchBehavior Verfahren eingerichtet wird, wie:

    public void ApplyDispatchBehavior(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase)
    {
        WorkflowServiceHost host = serviceHostBase as WorkflowServiceHost;
        if (host != null)
        {
            UnityService.CreateContainer();
            host.WorkflowExtensions.Add<IUnityContainer>(delegate { return UnityService.CreateChildContainer(); });

            System.Diagnostics.Debug.WriteLine("NotificationService : Adding extension");

            WorkflowRuntimeBehavior wfbehavior = serviceDescription.Behaviors.Find<WorkflowRuntimeBehavior>();
            WorkflowRuntime runtime = wfbehavior.WorkflowRuntime;

            runtime.WorkflowStarted += runtime_WorkflowStarted;
            runtime.WorkflowCreated += runtime_WorkflowCreated;

            runtime.WorkflowUnloaded += runtime_WorkflowUnloaded;
            runtime.WorkflowSuspended += runtime_WorkflowSuspended;

            runtime.WorkflowCompleted += runtime_WorkflowCompleted;
            runtime.WorkflowAborted += runtime_WorkflowAborted;
            runtime.WorkflowTerminated += runtime_WorkflowTerminated;
        }
    }

Keine der Ereignisse ausgelöst werden, die nur zu sagen geht, dass die Art, wie ich bin Referenzierung der Laufzeitinstanz in diesem speziellen Szenario falsch.

Wer weiß einen Weg, dies zu tun? Vielen Dank im Voraus.

War es hilfreich?

Lösung

Die Workflow und WorkflowRuntimeBehavior sind WF3 Artefakte aber Ihre Frage ist, wie WF4 markiert so dass ich nehme an, Sie WF4 verwenden.

In WF4 die Art und Weise, dies zu tun ist, indem Sie eine benutzerdefinierte TrackingParticipant mit und fügen hinzu, dass in der WorkflowExtensions Sammlung des Workflow.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top