WCF服务清除缓冲区

时间:2012-05-07 18:23:22

标签: wcf service buffer clear pollingduplexhttpbinding

我目前正在开发WCF服务并且遇到一个小问题。该服务是Polling Duplex服务。我通过发送到服务器的消息启动数据传输。然后,服务器通过回调通道将大量数据发送回客户端。

要停止我向服务器发送消息,告诉它停止。然后它通过回调通道发送一条消息,确认这一点让客户知道。

问题在于,一堆数据包被缓冲,通过回调通道发送到客户端。这导致长时间等待确认将其恢复,因为它必须等待所有数据首先通过。

有没有办法可以清除服务器端回调通道的缓冲区?我不需要担心丢失数据,我只需要扔掉它并立即发送确认消息。

1 个答案:

答案 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对象。