2012-03-03 4 views
1

Я разрабатываю клиентское приложение, которое подключается к серверу и извлекает из него различную информацию. Это многопоточное приложение. Когда я начинаю с нескольких потоков, он отлично работает. До него не начинают бросать исключение со следующим сообщением: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, соединения активируются, и потоки продолжают работать некоторое время. Как Фиддлер исправляет эту проблему?

+0

Snarky ответ: это то, что для отладчика. Реальный ответ: если он не может подключиться к серверу, они не будут отображаться OPEN в TCPView. Нам, по крайней мере, нужно будет увидеть какой-то код, который поможет вам понять, что происходит. –

ответ

0

Возможно, вы подключаете интернет через прокси-сервер, чтобы проверить настройки IE-lan. из C# вам нужно добавить настройки прокси.

var request = (HttpWebRequest)WebRequest.CreateHttp(url); 
        WebProxy proxy = new WebProxy("http://127.0.0.1:8888", true); 
        proxy.Credentials = new NetworkCredential("user", "pwd", "ADomain"); 
        request.Proxy = proxy; 
        request.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 

        request.Timeout = 1000 * 60 * 5; 
        request.Method = method; 
        request.Headers.Add("DAUTH", dauth);request.GetResponse(); 
Смежные вопросы