我有一个 WF 服务,我正在尝试将接收活动设置为“订阅”和“取消订阅”。我使用This WF Durable Duplex Tutorial作为基础,因为我的服务执行对客户端的回调。基本上,将其视为聊天服务。
我可以很好地拨打两个接收活动的客户电话。发生的情况是客户端的回调地址被传递给服务上的 Subscribe()。该地址作为变量存储在 WF 服务中,一切看起来都像预期的那样工作。
当客户端调用 Unsubscribe() 时,我在调试期间在地址 var 上设置的手表显示为null
. 那么给了什么?
这是我的 WF 服务布局的基本设置...
一切都包含在 DoWhile 活动中。里面是一个 Pick 活动和两个 Pick 分支。第一个分支用于订阅活动。它有一个接收-发送-应答活动,将客户端传递的字符串分配给 WF 地址变量。第二个分支处理取消订阅。触发器是 Request 活动,再次传入客户端地址。
从那里它进入一个序列,从一个 If 开始。它检查是否unsubscribeAddress
等于address
已订阅。如果确实如此,那么它将设置address
为String.Empty
并将成功消息发送回客户端。
为什么将范围为包围 DoWhile 活动的变量隐式分配给 null?我试图让它工作,这样我就可以从那里实现多个客户端订阅者,并处理调用回调到多个客户端的触发器。
CONCAT 编辑:我在 DoWhile 级别设置了一个断点,一旦Unsubscribe()
调用我的 var 就为空。当Subscribe()
被调用时,手表会一直显示 var 中的值。直到我Unsubscribe()
有了一个客户。我应该改用 While Activity 吗?