Как завершить соединение HttpWebRequest в C#? Не работает даже установка timeout или readwritetimeout

Я хочу завершить httpwebrequest, когда он занимает слишком много времени в соединении. Вот примерный код, который я написал:

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
            request.Timeout = 5000;
            request.ReadWriteTimeout = 5000;
            request.Proxy = new WebProxy("http://" + proxyUsed + "/", true);
            request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.01; Windows NT 5.0)";

            using (WebResponse myResponse = request.GetResponse())
            {                    
                using (Stream s = myResponse.GetResponseStream())
                {
                    s.ReadTimeout = 5000;
                    s.WriteTimeout = 5000;
                    using (StreamReader sr = new StreamReader(s, System.Text.Encoding.UTF8))
                    {                            
                        result = sr.ReadToEnd();
                        httpLink = myResponse.ResponseUri.AbsoluteUri;
                        sr.Close();
                    }
                    s.Close();
                }
                myResponse.Close();
            }

Однако иногда соединение занимает около 15 минут, чтобы получить ответ. Через 15 минут я все еще могу получить ответ, но не полный исходный код URL. Я предполагаю, что соединение слишком медленное, что ответ URL мне немного данных в течение тайм-аута, скажем, например, получить 1байт за 5 секунд, так что это не истекает тайм-аут, но это очень долго. Как я могу прервать соединение? Спасибо:)

8
задан Tak 19 October 2011 в 04:46
поделиться