2010-01-15 2 views
0

У меня есть объект-помощник браузера, написанный на C#, который делает HTTP-запрос на HTTPWebRequest на моем сервере, когда пользователь нажимает кнопку на форме окна, и в нормальном случае это отлично работает. Однако каждый раз так часто я получаю BHO, который, кажется, сходит с ума и постоянно посылает мне огромное количество HTTPWebRequests (от 50 до 100 в минуту). Единственный способ, с помощью которого я мог остановить поведение, чтобы клиент перезагрузил свой компьютер, часто пользователи даже закрыли IE, но POST продолжают работать.Из-под контроля HTTPWebRequest

С кем-либо сталкивалось подобное поведение при использовании HTTPWebRequest? Похоже, что какая-то логика повторения в соединении сходит с ума, но я не думал, что у HTTPWebRequest был встроенный механизм повторных попыток, поэтому это кажется очень маловероятным.

Я неправильно настроил свою связь и есть хорошая стратегия для предотвращения чего-то подобного?

Вот как я устанавливаю мое соединение:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; 
HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(myUrl); 
webRequest.Timeout = 30000; 
webRequest.Method = "POST"; 
webRequest.KeepAlive = false; 
System.Net.ServicePointManager.Expect100Continue = false; 
webRequest.ContentType = "text/xml"; 
webRequest.ContentLength = myData.Length; 

using (StreamWriter requestWriter = new StreamWriter(webRequest.GetRequestStream())) 
{ 
    requestWriter.Write(this.myData); 
    requestWriter.Close(); 
} 
+0

Так же есть кнопка на самом деле внутри BHO или BHO подключена к чему-то еще? Возможно ли, что все, что наблюдает за этим щелчком, застряло в цикле или есть условие повышения, которое почти никогда не должно терпеть неудачу, но, по-видимому, есть? –

+0

извините, «состояние гонки» –

+0

Кнопка находится в пределах моего BHO, она в основном настраивается как обычное приложение для форм Windows. Я нажимаю кнопку и запускает обработчик события для кнопки, которая затем делает веб-запрос. – Millhouse

ответ

0

Может у вас есть клиент получить Wireshark след от своего компьютера, когда это произойдет?

Может ли быть какой-то другой объект, на котором размещен элемент управления IE, который, в свою очередь, заставляет ваш BHO размещаться и запускать запуск запросов?

К сожалению, если вы не можете получить репродукцию на своей машине, это будет просто выстрел в темноте.

+0

Интересная идея, к сожалению, не смогла воспроизвести эту вещь. Мне нужно будет подумать о том, что будет содержать элемент управления IE на рабочем столе среднего пользователя. – Millhouse

+0

Попробуйте двойную или тройную нажав кнопку отправки. Многие пользователи не «разглядывают» различия между объектами двойного щелчка и одиночными кликами (ссылки, кнопки, ярлыки и т. Д.). Я не могу представить, что именно, но может быть что-то * шуткой, когда второй идентичный запрос будет предпринят до завершения 1-го. – Jay

+0

Это что-то попробовать, я предположил, что отключил кнопку в обработчике кликов, пока не буду уверен, что мой запрос завершен, и защитит это условие. – Millhouse