Сбой HttpWebRequests при последующих вызовах - PullRequest
5 голосов
/ 20 января 2009

Я знаю, что это неопределенный вопрос, тем более что я не предоставляю никакого кода, но я разрабатываю приложение .Net 2.0, и у нас есть WebRequest, который отправляет данные во встроенный API.

Странная вещь происходит в нашем 3-м (и всегда 3-м) последующем запросе, который завершается с ошибкой в ​​методе GetRequestStream () запроса. Первый и второй раз его называют, все хорошо. В третий раз зависает на некоторое время и в конечном итоге время ожидания.

API вызывается другими приложениями, поэтому мы знаем, что это не проблема на стороне сервера или сети. Мы попробовали на нескольких машинах - у всех из которых есть та же самая проблема. Кто-нибудь когда-либо сталкивался с этой проблемой, или у кого-нибудь есть предположения о том, как отлаживать (поскольку объект ответа ничего не выдает или, по крайней мере, ничего полезного).

Ответы [ 2 ]

18 голосов
/ 20 января 2009

Обычно это происходит, если вы не утилизируете WebResponse. Существует ограничение на количество подключений от клиента к одной машине, и по умолчанию оно равно двум. Соединения могут быть повторно использованы (или закрыты), если вы закроете WebResponse. Заявление об использовании - ваш друг здесь:

WebRequest request = [...];
// Do stuff with the request stream here (and dispose it)
using (WebResponse response = request.GetResponse())
{
    // Stuff with the response
}
1 голос
/ 20 января 2009

Да, вы совершенно правы. Ответ не был расположен должным образом. Мы оставляли это на сборщике мусора, который, как вы уже догадались, собирался не вовремя. К сожалению, я закрыл свой браузер и забыл прочитать все ответы ( lol, как вы думаете, глупо я чувствую ), и проблема решена.

Сегодня вечером я узнал 2 вещи. 1, правильно распоряжайтесь своими веб-запросами; и 2, ОБРАТИТЕ БОЛЬШЕ ВНИМАНИЯ, ЧТОБЫ ОТВЕТИТЬ НА СТОЛБЫ!

...