访问 OperationContext
AccessingOperationContext 示例演示如何将消息传递活动(Receive 和 Send)与自定义范围活动一起使用以访问 Current 并附加或检索传出消息或传入消息中的自定义消息头。
演示
消息传递活动、ISendMessageCallback、IReceiveMessageCallback。
讨论 (Discussion)
此示例演示如何使用消息传递活动中的扩展性点(ISendMessageCallback 和 IReceiveMessageCallback)来访问 Current。 在工作流运行时中,将回调注册为由消息传递活动在执行后选取的 IExecutionProperty 的实现。 与该 IExecutionProperty 实现处于同一范围内的任何消息传递活动都会受到影响。 特别是,此示例使用自定义范围活动来强制实施回调行为。 在客户端工作流中使用 ISendMessageCallback 可将工作流的 Id 作为传出 MessageHeader 包含在其中。 然后,在使用 IReceiveMessageCallback 的服务中选择此标头,并将此标头的值输出到控制台。
设置、生成和运行示例
此示例使用 HTTP 终结点公开一个工作流服务。 若要运行此示例,必须通过以管理员身份运行 Visual Studio 来添加适当的 URL ACL,或在提升的提示符下执行以下命令来添加适当的 ACL。有关详细信息,请参见配置 HTTP 和 HTTPS。 确保替换了域和用户名。
netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%
在添加 URL ACL 后,请使用下列步骤。
生成解决方案。
通过右击解决方案并选择“设置启动项目”来设置多个启动项目。
将“Service”和“Client”(按此顺序)添加为多个启动项目。
运行应用。 客户端控制台显示运行两次的工作流,而服务窗口显示这些工作流的实例 ID。