У меня есть клиент 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, не работает. С клиента я больше не могу подключиться к какой-либо другой службе, просматривать любой веб-сайт, открывать сеансы RDP на других компьютерах и т. Д. Как только я перезагружаю клиент, все очищается и снова работает.
Похоже, что происходит утечка - утечка соединения по протоколу TCP или утечка памяти, хотя я не уверен, что это будет. Есть ли что-то еще, кроме того, чтобы закрыть его, чтобы предотвратить утечки? Любые другие предложения о том, как исправить или диагностировать проблему?
UPDATE
Я просто хотел упомянуть, что я использовал проводник процессов, и на вкладке Tcp / ip отображается не более 3 элементов.