Тайм-ауты служб WCF

Как работают тайм-ауты в WCF? Я знаю, например, что вы можете настроить sendTimeout и receiveTimeout для привязки клиентов. Но как они работают?

MSDN описывает sendTimeout как:

A TimeSpan value that specifies the interval of time provided for a send operation to complete. This value should be greater than or equal to Zero. The default is 00:01:00.

Что такое операции отправки / получения?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
61
0
93 723
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Сторона клиента:

  • SendTimeout используется для инициализации OperationTimeout, который управляет всем взаимодействием для отправки сообщения (включая получение ответного сообщения в случае запроса-ответа). Этот тайм-аут также применяется при отправке ответных сообщений из метода CallbackContract.
  • OpenTimeout и CloseTimeout используются при открытии и закрытии каналов (когда не передается явное значение тайм-аута).
  • ReceiveTimeout не используется.

Сторона сервера:

  • Тайм-аут отправки, открытия и закрытия такой же, как на клиенте (для обратных вызовов).
  • ReceiveTimeout используется уровнем ServiceFramework для инициализации тайм-аута простоя сеанса.

Источник - Брайан Макнамара на форумах MSDN.

Если я устанавливаю OperationTimeout на очень высокое значение, а sendTimeout на смехотворно маленькое значение, которое, по сути, должно истекать по таймауту, я никогда не получаю исключение тайм-аута. Может ли кто-нибудь сказать мне, как я могу настроить пример для запуска исключения sendTimeout?

Didier A. 18.05.2012 17:39

Моя служба WCF копирует файлы и возвращает обратные вызовы о ходе выполнения. Время истекло. После прочтения этого ответа я увеличил все значения тайм-аута, кроме ReceiveTimeout, несмотря на сообщение об ошибке WCF, в котором говорилось об увеличении ReceiveTimeout. Это не сработало. По крайней мере, в моем случае сработало увеличение ReceiveTimout.

Tony D 03.10.2013 00:09

Я обнаружил, что эта тема носит слишком общий характер: WCF, развернутый в Cassic и Integrated Pipeline, демонстрирует различное поведение при тайм-ауте. Этот ответ может удовлетворить «родной» WCF, такой как netTcpBinding, но в случае WCF, управляемого Httphandler, например, basichttpbinding, если вы выполняете очень длинное задание с привязкой к ЦП внутри операционного контракта, IIS может УБИТЬ WCF до закрытия (на стороне сервера) !! В этом случае я предлагаю пересмотреть таймауты Пул приложений IISтакже, таймауты ping и выключения

Diego Scaravaggi 07.11.2013 23:30

Просто проясните OperationTimeout. Согласно моим тестам, OpenTimeout и SendTimeout не имеют ничего общего со временем, затрачиваемым уровнем бизнес-логики на другой стороне (то есть на стороне обслуживания) для завершения логики работы. Время, затрачиваемое логикой операции, фактически регулируется OperationTimeout. Например, если установить OpenTimeout на 1 минуту и ​​OperationTimeout на 2 минуты, после того, как клиент wcf успешно установит соединение с сервером, логика операции будет запущена, а затем db займет 3 минуты, теперь это не вызовет OpenTimeout, но вызовет OperationTimeout.

cateyes 31.12.2013 02:34

В дополнение к тому, что было в этом посте, на стороне клиента также определено время ожидания операции. Посмотри это:

http://final-proj.blogspot.com/2009/09/wcf-timeouts.html

См. «Тайм-ауты в WCF и их значения по умолчанию» http://blogs.msdn.com/b/hongmeig/archive/2010/03/06/timeouts-in-wcf-and-their-default-values.aspx

Timeouts on binding-SendTimeout, ReceiveTimeout, OpenTimeout and CloseTimeout. They can be set easily either through config or code on the Binding. The default value for those are 1 minute.

ServiceHost has OpenTimeout and CloseTimeout. Default for OpenTimeout is 1 minute, and default for CloseTimeout is 10 seconds.

Timeouts on client side channel. There is an OperationTimeout, which you can set it by casting the channel to IContextChannel. The default for this is also 1 minute. Ttimeout on tcp transport, called ChannelInitializationTimeout, and its default value is 5 seconds.

ASPNET. There are shutdown timeout, just like the service host close timeout, default is 90 seconds. ExecutionTimeout, just like our operation timeout, default is 110 seconds.

Другие вопросы по теме