访问 OperationContext

AccessingOperationContext 示例演示了如何将消息传递活动(ReceiveSend)与自定义范围活动一起使用,以访问Current和附加或检索传出或传入消息中的自定义消息标头。

演示

消息传递活动、ISendMessageCallbackIReceiveMessageCallback

讨论

此示例演示如何在消息传递活动中使用扩展点 (ISendMessageCallbackIReceiveMessageCallback访问 Current。 在工作流运行时中,将回调注册为由消息传递活动在执行后选取的 IExecutionProperty 的实现。 在与该 IExecutionProperty 实现相同范围内的任何消息传递活动都会受到影响。 具体而言,此示例使用自定义作用域活动来强制实施回调行为。 在客户端工作流中使用 ISendMessageCallback 可将工作流的 Id 作为传出 MessageHeader 包含在其中。 然后,在服务中使用IReceiveMessageCallback来获取该标头,该标头的值将输出到控制台。

设置、生成和运行示例

  1. 此示例使用 HTTP 终结点公开工作流服务。 若要运行此示例,必须添加适当的 URL 访问控制列表(请参阅 配置 HTTP 和 HTTPS 了解详细信息)。您可以通过以管理员身份运行 Visual Studio 或在提升的命令提示符下执行以下命令来添加相应的 ACL。 确保替换了域和用户名。

    netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%
    
  2. 添加 URL ACL 后,请使用以下步骤。

    1. 生成解决方案。

    2. 右键单击解决方案并选择“ 设置启动项目”,设置多个启动项目。

    3. 服务和客户端(按该顺序)添加为多个启动项目。

    4. 运行该应用程序。 客户端控制台显示运行两次的工作流,“服务”窗口显示这些工作流的实例 ID。