Zugreifen auf OperationContext

Das AccessingOperationContext-Beispiel veranschaulicht, wie die Messagingaktivitäten (Receive und Send) mit einer benutzerdefinierten Bereichsaktivität verwendet werden können, um auf Current zuzugreifen und einen benutzerdefinierten Nachrichtenheader in einer ausgehenden oder eingehenden Nachricht anzufügen oder abzurufen.

Zeigt

Messagingaktivitäten, ISendMessageCallback, IReceiveMessageCallback

Diskussion (Discussion)

In diesem Beispiel wird gezeigt, wie Erweiterungspunkte (ISendMessageCallback, IReceiveMessageCallback) in Messagingaktivitäten verwendet werden, um auf Current zuzugreifen. Die Rückrufe werden innerhalb der Workflowlaufzeit als eine Implementierung von IExecutionProperty registriert, die von den Messagingaktivitäten nach der Ausführung abgerufen wird. Jede Messagingaktivität im gleichen Bereich wie die IExecutionProperty-Implementierung ist betroffen. Insbesondere erzwingt dieses Beispiel das Rückrufverhalten mithilfe einer benutzerdefinierten Bereichsaktivität. ISendMessageCallback wird im Clientworkflow verwendet, um Id des Workflows als ausgehenden MessageHeader einzuschließen. Dieser Header wird dann im Dienst mit IReceiveMessageCallback abgerufen, und der Wert des Headers wird auf der Konsole ausgegeben.

Einrichten, Erstellen und Ausführen des Beispiels

  1. Dieses Beispiel macht einen Workflowdienst mithilfe von HTTP-Endpunkten verfügbar. Um dieses Beispiel auszuführen, müssen richtige URL-ACLs hinzugefügt werden (weitere Informationen finden Sie unter Konfigurieren von HTTP und HTTPS), entweder durch Ausführen von Visual Studio als Administrator oder durch Ausführen des folgenden Befehls an einer Eingabeaufforderung mit erhöhten Rechten, um die entsprechenden ACLs hinzuzufügen. Stellen Sie sicher, dass die Domäne und der Benutzername ersetzt werden.

    netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%
    
  2. Sobald die URL-ACLs hinzugefügt wurden, führen Sie die folgenden Schritte aus.

    1. Erstellen Sie die Projektmappe.

    2. Legen Sie mehrere Startprojekte fest, indem Sie mit der rechten Maustaste auf die Projektmappe klicken und Startprojekte festlegen auswählen.

    3. Füge Sie Dienst und Client (in dieser Reihenfolge) als mehrere Startprojekte hinzu.

    4. Führen Sie die Anwendung aus. Die Clientkonsole zeigt einen Workflow an, der zweimal ausgeführt wird, und das Dienstfenster zeigt die Instanz-ID dieser Workflows an.