Freigeben über


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 einen benutzerdefinierten Nachrichtenheader zuzugreifen oder ihn in einer ausgehenden oder eingehenden Nachricht Current anzuhängen bzw. abzurufen.

Zeigt

Messaging-Aktivitäten, ISendMessageCallback, IReceiveMessageCallback.

Diskussion

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 selben Umfang wie diese 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. In diesem Beispiel wird ein Workflowdienst mithilfe von HTTP-Endpunkten verfügbar gemacht. Zum Ausführen dieses Beispiels müssen richtige URL-ACLs hinzugefügt werden (siehe Konfigurieren von HTTP und HTTPS für Details), 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 Ihre Domäne und Ihr Benutzername ersetzt werden.

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

    1. Erstellen Sie die Lösung.

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

    3. Fügen 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 im Dienstfenster wird die Instanz-ID dieser Workflows angezeigt.