我目前正在开发WCF服务并且遇到一个小问题。该服务是Polling Duplex服务。我通过发送到服务器的消息启动数据传输。然后,服务器通过回调通道将大量数据发送回客户端。
要停止我向服务器发送消息,告诉它停止。然后它通过回调通道发送一条消息,确认这一点让客户知道。
问题在于,一堆数据包被缓冲,通过回调通道发送到客户端。这导致长时间等待确认将其恢复,因为它必须等待所有数据首先通过。
有没有办法可以清除服务器端回调通道的缓冲区?我不需要担心丢失数据,我只需要扔掉它并立即发送确认消息。
答案 0 :(得分:1)
我不确定这是否会引导您进入正确的方向...我有类似的服务,当我查看我的Subscribe()方法时,我可以访问它:
var context = OperationContext.Current;
var sessionId = context.SessionId;
var currentClient = context.GetCallbackChannel<IClient>();
context.OutgoingMessageHeaders.Clear();
context.OutgoingMessageProperties.Clear();
现在,如果您有办法使用IClient对象,并访问从中获取IClient实例的上下文(解析它的上下文),可以运行以下两个语句吗?
context.OutgoingMessageHeaders.Clear();
context.OutgoingMessageProperties.Clear();
从我的想法中快速漫步。很想知道这是否会解决,如果没有其他的话,我会知道个人信息。你可以将OperationContext作为SubscriptionObject的一部分缓存,它包含2个属性,第一个属于OperationContext,第二个属于你的IClient对象。