我的解决方案是使用.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>
我们有什么方法可以关闭从客户端到远程服务器的套接字连接吗?