我有一个WCF客户端用于与WCF主机通信。客户端每隔2分钟与主机通信以发送一些信息,之后我在连接上执行Close()。以下每两分钟运行一次:
var binding = new NetTcpBinding(SecurityMode.None, false);
binding.CloseTimeout = TimeSpan.FromMinutes(1);
binding.OpenTimeout = TimeSpan.FromMinutes(1);
binding.ReceiveTimeout = TimeSpan.FromMinutes(10);
binding.SendTimeout = TimeSpan.FromMinutes(1);
binding.TransferMode = TransferMode.Buffered;
binding.TransactionProtocol = TransactionProtocol.OleTransactions;
binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
binding.ListenBacklog = 10;
binding.MaxBufferPoolSize = 524288;
// Default is 65536
binding.MaxBufferSize = 965536;
binding.MaxConnections = 10;
// Default is 65536
binding.MaxReceivedMessageSize = 965536;
binding.ReaderQuotas.MaxDepth = 32;
binding.ReaderQuotas.MaxStringContentLength = 90000;
binding.ReaderQuotas.MaxArrayLength = Int32.MaxValue;
binding.ReaderQuotas.MaxBytesPerRead = 4096;
binding.ReaderQuotas.MaxNameTableCharCount = Int32.MaxValue;
wcfClient = new LabStatsServiceClient(binding, new EndpointAddress(endPointAddress));
try {
// Do some communication with the server
...
} finally {
// Close the connection
wcfClient.Close();
}
在某些机器上 - 少数几个 - 客户端会像这样运行2天然后突然停止工作。当它停止工作时,各种各样的事情在客户端变得奇怪。与TCP / IP无关。从客户端,我不能再telnet到任何其他服务,浏览任何网站,打开到其他PC的RDP会话等。一旦我重新启动客户端,一切都会清除并再次运行。
似乎有一些与泄漏相关的事情 - 泄漏的tcp连接,或者可能是内存泄漏,但我不确定它会是什么。除了关闭它以防止泄漏之外我还需要做更多的事吗?关于如何修复或诊断问题的任何其他建议?
更新
我只是想提一下,我使用了进程资源管理器,而Tcp / ip选项卡最多只能显示3个项目。