WCF basicHttpBinding客户端即使调用Close()也不会关闭套接字连接

时间:2018-11-24 15:56:02

标签: c# .net wcf client basichttpbinding

我的解决方案是使用.NET Framework 4.6实现ServiceProxyClient。我可以调用远程方法,客户端在指定端口打开与远程服务器的连接。但是WCF不会显式关闭套接字连接。我试图捕获所有异常并在catch块中调用Abort()。但是该服务不会引发任何异常。客户端等待,因为客户端打开的早期套接字连接仍在使用中,并且在3 -4分钟后出现超时错误。

这是示例代码

var client = new ServiceClient();
try 
{
  var response = client.SomeMethod(parmater);
  client.ChannelFactory.Close();
  client.Close();

 }
 catch (FaultException)
 {
     client.Abort();
 }
 catch (CommunicationException)
 {
     client.Abort();
 }
 catch(Exception)
 {
      client.Abort();
 }

调用Close()和Abort()似乎无法关闭打开到远程服务器的套接字连接。

我已经使用VS2017生成了serviceproxy参考。对远程端点使用basichttpbinding。

<basicHttpBinding>
    <binding name="HttpService" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
        maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
    </binding>

我们有什么方法可以关闭从客户端到远程服务器的套接字连接吗?

0 个答案:

没有答案