WCF服务清除缓冲区

WCF服务清除缓冲区,wcf,service,buffer,pollingduplexhttpbinding,Wcf,Service,Buffer,Pollingduplexhttpbinding,我目前正在从事WCF服务,有一个小问题。该服务是轮询双工服务。我通过发送到服务器的消息启动数据传输。然后,服务器通过回调通道相当快地将大数据包发送回客户端 要停止服务器,我会向服务器发送一条消息,告诉它停止。然后,它通过回调通道发送一条消息,确认这一点,让客户机知道 问题是大量数据包被缓冲起来,通过回调通道发送到客户端。这会导致长时间等待确认返回,因为它必须等待所有数据首先通过 有没有办法清除服务器端回调通道的缓冲区?我不需要担心丢失数据,我只需要扔掉它并立即发送确认消息。我不确定这是否能引导您

我目前正在从事WCF服务,有一个小问题。该服务是轮询双工服务。我通过发送到服务器的消息启动数据传输。然后,服务器通过回调通道相当快地将大数据包发送回客户端

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

问题是大量数据包被缓冲起来,通过回调通道发送到客户端。这会导致长时间等待确认返回,因为它必须等待所有数据首先通过


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

我不确定这是否能引导您进入正确的方向。。。我有一个类似的服务,当我查看Subscribe()方法时,我可以访问:

var context = OperationContext.Current;
var sessionId = context.SessionId;
var currentClient = context.GetCallbackChannel<IClient>();
context.OutgoingMessageHeaders.Clear();
context.OutgoingMessageProperties.Clear();

只是从我的思绪中快速地漫步。我很想知道这是否会解决它,如果没有其他的个人信息。能否将OperationContext缓存为SubscriptionObject的一部分,该SubscriptionObject将包含两个属性,第一个是OperationContext,第二个是IClient对象。

这似乎是正确的方向。我保留了客户机和OperationContext,但当我清除OutgoingMessageHeaders时,它会在清除之前显示计数为0。如果我发现了什么,我会再处理一些,然后告诉你。我还没有想出一个好的解决方案。我甚至不确定所有的数据都在哪里缓冲。服务器正在发送数据,然后我告诉它停止,我看到这种情况发生在服务器端,但客户端在那之后的几秒钟内继续获取数据。如果我放慢发送速度,我就没有问题了。但这里的问题是连接速度会有所不同,我觉得这需要根据连接进行调节。即使我能知道缓冲区什么时候是空的,这会有所帮助,那么我也可以存储自己发送的数据。
context.OutgoingMessageHeaders.Clear();
context.OutgoingMessageProperties.Clear();