我的WCF服务有点问题 实际上,用户可以订阅“发布”服务。
我只是在做OperationContext.Current.GetCallbackChannel<IPublishing>();
然后我将返回的对象添加到List(一种List<IPublishing>
)
由于我希望在发布消息时通知我的客户,我只需调用所有订阅用户的回调。
效果很好,但用户可以订阅两次,我不想这样做
这就是为什么我要if (!theList.Contains(theCallbackChannelReturned))
来验证这个约束......
这里的事实是,每当我创建callbackchannel时,他似乎创建了另一个新的IPublishing实例,即使在同一个客户端上......
我不知道如何做到这一点...我发现OperationContext.Current.InstanceContext
仍然返回相同的Hashcode但是
GetCallbackChannel没有...
谢谢!
答案 0 :(得分:1)
在客户端回调实现中,您应该执行以下操作:
[CallbackBehavior(
ConcurrencyMode = ConcurrencyMode.Reentrant,
UseSynchronizationContext = false)]
public partial class ServiceClient : IMyService_Callback
{ .... }