Поддерживает HttpWebRequest - как соединение повторно используется .net? - PullRequest
9 голосов
/ 06 октября 2011

Hy, Я использую HttpWebRequest в 10 параллельных темах для загрузки списка изображений. Я отсортировал изображения после имени хоста, поэтому каждый из этих потоков получает изображение с одного и того же имени хоста.

HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(url);
myReq.ServicePoint.ConnectionLimit = 10;
myReq.Timeout = 2000;
myReq.KeepAlive = true;

HttpWebResponse myResp = (HttpWebResponse )myReq.GetResponse();

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

Так как же соединение повторно используется в .net? В моей программе каждый поток создает новое соединение с именем хоста или повторно использует существующее из-за свойства KeepAlive ??

1 Ответ

4 голосов
/ 05 марта 2012

Кажется, что проблема была в некоторых серверах, которые использовали http / 1.0.HttpWebRequest равен с использованием 100 Продолжить поведение, но сервер его не поддерживает.

Поэтому я изменил свойство System.Net.ServicePointManager.Expect100Continue на false, и тогда все работало нормально.

...