Исключение связи WCF при использовании nettcpbinding - PullRequest
0 голосов
/ 29 апреля 2020

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

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

1 Ответ

0 голосов
/ 30 апреля 2020

Ошибка связи / ошибка тайм-аута обычно вызвана тем, что клиентский прокси не закрыт должным образом. Я предлагаю вам указать клиентский прокси / канал службы в операторе 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);

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

...