WCF断开连接后释放资源

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gao271003105/article/details/89514257

WCF服务端短时间内连接了超过400个客户端,再有新的连接请求则不再接收,报错1min连接超时。

解决思路是不用的连接,释放掉,不要占用资源。

释放的方法如下,

 var deathService = m_Service  as ICommunicationObject;
                    try
                    {
                        deathService.Close();
                    }
                    catch (System.ServiceModel.CommunicationException)
                    {
                        deathService.Abort();
                    }
                    catch (TimeoutException)
                    {
                        deathService.Abort();
                    }
                    catch (Exception)
                    {
                        deathService.Abort();
                    }

 ICommunicationObject的接口释放连接资源,所有的客户端对象都实现了ICommunicationObject接口。

m_Service  是继承wcf服务接口,并且建立连接的对象,客户端用来与服务端沟通的东西。

使用场景:

1,是客户端主动知道自己已经不需要与服务端对话了,直接进行释放。

2,客户端不知道自己是不是还需要与服务端会话,这就需要服务端通过回调来告诉客户端,客户端在释放。

3,客户端想要服务端保持一个长连接,这个可以使用心跳包来实现,在心跳包中去实现释放。

猜你喜欢

转载自blog.csdn.net/gao271003105/article/details/89514257
今日推荐