C #: время ожидания не соответствует истекшему времени - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть приложение, которое подключается к службе (webserviceSoap1), и эта служба имеет следующую конфигурацию тайм-аута:

<binding name="webserviceSoap1" 
         openTimeout="00:10:00" 
         closeTimeout="00:10:00" 
         sendTimeout="00:10:00"
         receiveTimeout="00:10:00">

Из того, что я понимаю, я заявляю, что все тайм-ауты должны ждатьпо крайней мере 10 минут, чтобы завершить связь и получить System.TimeoutException .Однако, вот проблема, которую я не понимаю .Примерно через 2-3 минуты я получаю исключение TimeoutException, в котором говорится, что программа ждала ответа почти десять минут (что невозможно), и там же говорится, что истекшее время было около двух минут

Timeout exception says it waited almost 10 minutes, but elapsed time is around two minutes

Почему промежуток времени?Правильно ли я настраиваю значения привязки?

Если я изменю значения таймаутов на «10:00:00», процесс будет завершен правильно.Однако, все еще используя «01:00:00», который, как я понимаю, составляет час, процесс прерывается через 4 минуты, сообщая, что ожидал «00: 59: 59.16472» перед отправкой TimeoutException.

1 Ответ

0 голосов
/ 20 сентября 2018

Проблема была обнаружена в Балансировщике нагрузки, который управлял подключением клиента к серверу. И клиент, и служба настроены на ожидание 10 минут ожидания. Однако у балансировщика нагрузки была всего одна минута, и поэтому тайм-аут возник раньше, чем ожидалось.

Я прошу администраторов балансировщика нагрузки изменить его на 10 минут, и все работает как положено.

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

Кроме того, способ, которым балансировщик нагрузки управляет прерыванием службы, может вводить в заблуждение, поскольку в моем случае балансировщик нагрузки (F5) будет ожидать, пока служба вернет ответ, а затем прервет ответ, возникающий собственная ошибка тайм-аута. В результате клиент получает только уведомление о достигнутом тайм-ауте. Кроме того, клиент не получит эту ошибку ни за одну минуту (установленную балансировщиком нагрузки), ни за 10 минут (настроенную службой), но в тот момент, когда служба вернет ответ.

Надеюсь, это поможет любому, у кого подобное поведение.

...