Клиент тайм-аута WCF против сервера

Может ли кто-нибудь объяснить мне, в чем разница между конфигурацией тайм-аута на сервере и весусе на клиенте? Например, что произойдет, если клиент установит для параметра sendTimeout значение 5 минут, в то время как в конфигурации сервера оно установлено на 1 минуту? Преобладает ли клиент, поскольку он инициирует общение?

Спасибо за вашу помощь !


person Patrice Cote    schedule 28.07.2010    source источник


Ответы (2)


Кажется, я понял это, взгляните на http://omsite.blogspot.com/2008/04/playing-with-wcf-nettcpbinding-timeouts.html.

Когда клиент инициирует вызов сервера, действуют параметры sendTimeout на стороне клиента и ReceiveTimeout на стороне сервера. Клиент должен отправить (или нажать) все данные до истечения срока действия ReceiveTimeout, установленного на сервере. Сервер должен завершить свою операцию и вернуть результаты клиенту до истечения срока действия sendTimeout, установленного на клиенте.

Если роли поменялись местами, то есть сервер открывает связь с клиентом (например, в обратном вызове и т. д.), тогда в игру вступают sendTimeout на сервере и ReceiveTimeout на клиенте.

Существуют также OpenTimeout и CloseTimeout, которые контролируют подключение канала, устанавливая тайм-ауты, и работают на более низких уровнях канала (линейные сокеты и т. д.).

person Shreedhar Kotekar    schedule 21.12.2010
comment
Ссылка в этом ответе мертва. - person Dave Ziegler; 13.02.2012
comment
Да, ссылка умерла. Я не могу найти этот пост :(. Однако я уловил суть в своем ответе - person Shreedhar Kotekar; 03.03.2012
comment
@ShreedharKotekar Это неправильно. receiveTimeout игнорируется клиентом. На сервере используется для определения простоя в привязках на основе сеанса. . - person gravidThoughts; 01.08.2018

В тестах тот сценарий, который вы просили. Тайм-аут запроса составляет 5 минут, что было определено в клиенте.

О тайм-аутах на стороне клиента

SendTimeout — используется для инициализации OperationTimeout, который управляет всем процессом отправки сообщения, включая получение ответного сообщения для операции службы запроса/ответа. Этот тайм-аут также применяется при отправке ответных сообщений из метода контракта обратного вызова.

ReceiveTimeout — не используется

О тайм-аутах на стороне службы

SendTimeout такие же, как на клиенте

ReceiveTimeout — используется уровнем Service Framework для инициализации тайм-аута бездействия сеанса, который определяет, как долго сеанс может бездействовать до истечения времени ожидания.

См. https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/configuring-timeout-values-on-a-binding

person Henrique Müller    schedule 06.07.2017