Джон прав: как только вы закроете http-соединение, все готово. Вы не можете вернуться к тому же процессу.
Так что, если вы можете использовать другую технологию, которая позволяет дуплекс на одном соединении (например, WCF), сделайте это!
Однако
если у вас нет выбора, кроме как использовать веб-сервисы,
вот три способа заставить это работать. Вы можете получить таймауты на любом из них.
Вариант 1:
Забудьте часть о том, что «данные ответов клиента верны». Просто сделайте, чтобы каждый поток сделал свой запрос и ждал данных.
Вариант 2:
Теперь, если предположить, что это не сработает, и вы должны выполнить проверку, этот способ требует, чтобы клиент сделал 2 запроса.
Первый запрос: возвращает действительный / недействительный.
Второй запрос: возвращает долгосрочные результаты.
Вариант варианта 2:
Если у вас есть проблемы с тайм-аутом, вы можете в первом запросе сгенерировать GUID или уникальный ключ базы данных и запустить другой процесс, передав ему этот ключ, и вернуть ключ клиенту. (если вы можете заставить сервер позволять вам запускать процесс - зависит от настроек / потребностей безопасности - если нет, то вы можете запустить асинхронный поток и продолжить его работу после завершения websvc?) Процесс выполнит длинная задача, обновите строку в базе данных с уникальным идентификатором, когда закончите, показывая результаты плюс флаг «сделано». Второй запрос клиента всегда может вернуться немедленно, а если обработка не завершена, вернуть, если это так, вернуть результаты. Клиент будет повторять это каждые 5 секунд или около того, пока не будет сделано.
Хаки, я знаю, но у нас не всегда есть выбор для технологии, которую мы используем.