Partage via


Accès à OperationContext

L’exemple AccessingOperationContext montre comment les activités de messagerie (Receive et Send) peuvent être utilisées avec une activité d’étendue personnalisée pour accéder à Current, et attacher ou récupérer un en-tête de message personnalisé dans un message sortant ou entrant.

Illustre le

Activités de messagerie, ISendMessageCallback, IReceiveMessageCallback.

Discussion

Cet exemple montre comment utiliser des points d'extensibilité (ISendMessageCallback, IReceiveMessageCallback) dans les activités de messagerie pour accéder à Current. Les rappels sont inscrits dans le runtime du workflow sous la forme d'une implémentation d'IExecutionProperty qui est choisie par les activités de messagerie lors de l'exécution. Toute activité de messagerie de la même étendue que cette implémentation IExecutionProperty est affectée. Plus particulièrement, cet exemple utilise une activité d'étendue personnalisée pour appliquer le comportement de rappel. Le ISendMessageCallback est utilisé dans le workflow client pour ajouter le Id du workflow comme MessageHeader sortant. Cet en-tête est ensuite choisi dans le service à l'aide d'IReceiveMessageCallback et la valeur de l'en-tête est imprimée sur la console.

Configurer, générer et exécuter l’exemple

  1. Cet exemple expose un service de workflow à l'aide de points de terminaison HTTP. Pour exécuter cet exemple, des listes ACL d’URL appropriées doivent être ajoutées (pour plus d’informations, consultez Configuration de HTTP et HTTPS), en exécutant Visual Studio comme administrateur ou en exécutant la commande suivante dans une invite de commandes avec élévation de privilèges pour ajouter les listes ACL appropriées. Vérifiez que vos domaine et nom d'utilisateur sont substitués.

    netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%
    
  2. Une fois les listes de contrôle d'accès (ACL) d'URL ajoutées, effectuez les étapes suivantes.

    1. Générez la solution.

    2. Définissez plusieurs projets de démarrage en cliquant avec le bouton droit sur la solution, puis en sélectionnant Définir les projets de démarrage.

    3. Ajoutez Service et Client (dans cet ordre) comme projets de démarrage.

    4. Exécutez l’application. La console cliente affiche un workflow qui est exécuté deux fois et la fenêtre Service affiche l'ID d'instance de ces workflows.