Клиент WCF аварийно завершает работу и отключает все остальные соединения TCP / IP - PullRequest
1 голос
/ 14 июня 2011

У меня есть клиент 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 элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...