У меня есть запрос к моему собственному сервису, который завершается через 15 секунд. Не должно быть проблемой, верно? На самом деле у нас есть таймер на стороне обслуживания, поэтому для его завершения потребуется максимум 15 секунд. Однако клиент видит «соединение было принудительно закрыто» и автоматически (на уровне System.Net - я видел это при включении диагностики) дважды повторяет запрос GET.
Да, кстати, это не-SOAP ситуация (служба REST WCF 4), поэтому в середине нет ни одного из этих SOAP-компонентов. Кроме того, мой клиент - это программа, а не браузер.
Если я уменьшу время до 5 секунд (что я могу сделать искусственно), повторные попытки прекратятся, но я затрудняюсь объяснить, как соединение должно быть разорвано так быстро. Флаг HttpWebRequest.KeepAlive по умолчанию имеет значение true и не изменяется, поэтому соединение должно оставаться открытым.
Время повторных попыток интересно. Они приходят в конце любого тайм-аута, который мы выберем (например, 10, 15 секунд или что-то еще), поэтому клиентская сторона реагирует только после получения первого ответа.
Другое дело: нет признаков проблемы на стороне обслуживания. Он работает просто отлично, но видит удивительную (для меня) пару повторных запросов от клиента.
Я гуглил эту проблему и выдался пустым. Стандарт поддержания активности составляет более 100 секунд AFAIK, поэтому я все еще озадачен, почему клиент ведет себя так, как есть - и поведение находится на уровне System.Net, поэтому я не могу пройти через него.
Любая помощь здесь будет очень цениться!
== Тевя ==