我有一个WF服务,我试图设置接收活动“订阅”和“取消订阅”。我使用This WF Durable Duplex Tutorial作为基础,因为我的服务为客户执行回调。基本上,把它想象成聊天服务。为什么我的工作流服务(4.0)变量在DoWhile活动中变为空?
我可以使客户端调用两个接收活动就好了。会发生什么事是客户的回调地址被传递给服务上的Subscribe()。该地址作为WF服务中的一个变量存储,并且一切看起来都像预期的那样工作。
当客户端调用Unsubscribe()时,我在调试过程中设置了地址var,表示它为null
。那么是什么给了?
这里是我的WF服务布局的基本设置...
一切都在一个DoWhile活动笼罩。里面是Pick活动和两个Pick分支。第一个分支用于订阅活动。它有一个receive-sendreply活动,它将客户端传递的字符串分配给WF地址var。第二个分支处理退订。触发器是请求活动,客户端地址再次通过。
从那里进入一个序列,从一个If开始。它会检查unsubscribeAddress
是否等于已订阅的address
。如果是,则它将address
设置为String.Empty
,并将成功消息发送回客户端。
为什么会将包含DoWhile活动的变量隐式分配给null?我试图让这个工作,以便我可以从那里实现多个客户端订阅者,并处理触发器,它将调用回调给多个客户端。
CONCAT编辑:我在DoWhile级别设置了一个断点,一旦调用Unsubscribe()
,我的var就为空。当调用Subscribe()
时,手表在var中一直显示一个值。直到我Unsubscribe()
与客户端。我应该使用While Activity吗?
对不起Gnostus,这是一个.Net工作流服务,我不能做一个类,并将该变量定义为一个属性。如果这是代码,那么它将更容易处理,并且更容易调试。 – jlafay 2010-06-17 19:13:44