У меня есть несколько приложений, использующих различные веб-технологии, такие как SOAP, WCF Services или просто простой XmlReader.Однако все они, похоже, сталкиваются с одной и той же проблемой: пропустить тайм-аут и бесконечно зависать, если интернет-соединение испытывает проблемы в неподходящее время.
Я установил тайм-аут во всех сценариях на небольшое значение, например, для wcf
closeTimeout="00:00:15" openTimeout="00:00:15"
receiveTimeout="00:00:15" sendTimeout="00:00:15"
или для мыла
_Session.Timeout = (int)TIMEOUT.TotalMilliseconds;
Эти тайм-ауты, как правило, попадают в заблуждение, однако, как представляется, существует особый случай, когда, если Интернет выпадает в нужное время, звонок будет зависать иникогда не превышать время (используя синхронные вызовы).
Я рассматривал возможность запуска таймера при каждом вызове и использования соответствующей функции .Abort()
, если время таймера истекает для отмены вызова.Однако мне было интересно, есть ли более простой способ исправить проблему и убедиться, что время ожидания истекло.
Кто-нибудь знает, почему это происходит, и если да, то каким чистым / простым / хорошим способом является обеспечениевремя ожидания звонка?