Я разрабатываю клиентское приложение, которое подключается к серверу и извлекает из него различную информацию. Это многопоточное приложение. Когда я начинаю с нескольких потоков, он отлично работает. До него не начинают бросать исключение со следующим сообщением:HttpWebRequest: невозможно подключиться к удаленному серверу
«Невозможно подключиться к удаленному серверу»
Я использовал TCPView и не могу найти что-нибудь о моем клиенте приложении. Поэтому, когда он начинает возвращаться «Невозможно подключиться», он даже не открывает какие-либо http-соединения ...
Как я могу понять, почему он не открывает соединение?
Спасибо,
EDIT:
Вот код, я использую в нескольких потоках для fecth содержания страницы:
HttpWebResponse response = null;
Stream resStream = null;
StreamReader reader = null;
string res = "";
try
{
HttpWebRequest request = (HttpWebRequest)
WebRequest.Create(requestUrl);
if (cookies_ == null)
{
cookies_ = new CookieContainer();
}
request.Timeout = timeoutVal_;
request.ReadWriteTimeout = timeoutVal_ * 2;
request.KeepAlive = false;
if (bUseCookies)
{
request.CookieContainer = cookies_;
}
// execute the request
response = (HttpWebResponse)
request.GetResponse();
resStream = response.GetResponseStream();
reader = new StreamReader(resStream);
res = reader.ReadToEnd();
}
catch (Exception ex)
{
throw new Exception(siteToken + " " + ex.Message);
}
finally
{
if (response != null)
response.Close();
if (resStream != null)
resStream.Close();
if (reader != null)
{
reader.Close();
}
}
return res;
Через пару минут нити попасть в цикл с Исключение таймаута или Невозможно подключиться к Серверу.
Странная вещь, что, если я запустил Fiddler, соединения активируются, и потоки продолжают работать некоторое время. Как Фиддлер исправляет эту проблему?
Snarky ответ: это то, что для отладчика. Реальный ответ: если он не может подключиться к серверу, они не будут отображаться OPEN в TCPView. Нам, по крайней мере, нужно будет увидеть какой-то код, который поможет вам понять, что происходит. –