Мы используем объект HttpWebRequest для обмена данными между серверной и клиентской частями нашего приложения. Когда IP-адрес сервера не может быть достигнут или недействителен (что происходит, и должно произойти ), клиент либо перестает ждать через 3 секунды (это установленное мной время ожидания), либо продолжает ждать до минуты, в зависимости от того, на каком компьютере он запущен!
Код следует:
HttpWebRequest webRequest = null;
WebResponse webResponse = null;
webRequest = (HttpWebRequest)WebRequest.Create(serverURL);
webRequest.Timeout = 1000 * 3; //3 seconds
webRequest.ReadWriteTimeout = webRequest.Timeout;
webRequest.AllowWriteStreamBuffering = true;
//Adding headers here; code removed
webRequest.Proxy = null;
webResponse = webRequest.GetResponse();
Следуя совету по ускорению запроса, который я нашел на этом и других веб-сайтах, я также установил свойство ReadWriteTimeout и для Proxy значение null.
Хотя он корректно останавливается через 3 секунды на моем собственном компьютере и на других, которые я пробовал, на некоторых других он останавливается примерно через 40 секунд.
Я повторяю, что это то, что происходит, если он пытается подключиться к неверному адресу, такому как IP, который не существует в нашей подсети, и что «Использовать правильный IP» не является приемлемым решением (Я мог бы объяснить, почему, но я думаю, что это было бы не по теме). Если он подключается к существующему IP-адресу, обмен данными происходит быстро, как и должно быть.
Кто-нибудь видел нечто подобное?