Исключение связи WCF при использовании nettcpbinding

У нас есть собственная служба WCF, основанная на NetTCPBinding. Через несколько недель исключение связи случайно появляется после 4000-5000 запросов, после чего все запросы снова работают нормально. Кроме того, если я повторю тот же неудачный запрос, запрос тоже сработает. Это неправильное поведение проявляется при одной клиентской установке, для 100 других служба WCF работает вполне нормально с той же реализацией и NetTCPBinding. С нашей стороны обновления не было, проблемы начались за ночь. Я активировал средство просмотра трассировки службы, однако не смог найти ничего, что могло бы вызвать эту проблему. Итак, я проверил обновления Windows: я видел, что (среди прочего) было следующее обновление Windows https://support.microsoft.com/de-at/help/4538158/kb4538158, что указывает на то, что Microsoft «решила» проблему с привязкой WCFNetTCP. Однако, кажется, они что-то здесь сломали :-)

Поэтому я изменил NetTCPBinding на BasicHTTPBinding, и это исключение больше не появляется. Однако мы хотели бы использовать NetTCPBinding вместо BasicHTTPBinding... У кого-нибудь еще есть такая проблема?


person user6155321    schedule 29.04.2020    source источник


Ответы (1)


Ошибка связи/ошибка тайм-аута обычно вызвана тем, что прокси-сервер клиента не закрыт должным образом. Я предлагаю вам поместить клиентский прокси/сервисный канал в оператор Using.

using (ServiceReference1.ServiceClient client=new ServiceClient())
            {
                var result = client.Test();
                Console.WriteLine(result);
            }

Кроме того, попробуйте настроить следующие свойства.

NetTcpBinding binding = new NetTcpBinding();
binding.MaxBufferSize = Int32.MaxValue;
binding.MaxBufferPoolSize = Int32.MaxValue;
binding.SendTimeout = new TimeSpan(0, 10, 0);
binding.ReceiveTimeout = new TimeSpan(0, 10, 0);
binding.OpenTimeout = new TimeSpan(0, 10, 0);

Не стесняйтесь, дайте мне знать, если проблема все еще существует.

person Abraham Qian    schedule 30.04.2020