2012-03-03 32 views
1

我開發了連接到服務器並從中獲取不同信息的客戶端應用程序。它是多線程的應用程序。當我用幾條線啓動它時,它的工作非常完美。 直到它開始拋出一個異常,出現以下消息:HttpWebRequest:無法連接到遠程服務器

「無法連接到遠程服務器」

我用套裝軟件,並不能找到我的客戶端應用程序什麼。因此,當它開始返回「無法連接」時,它甚至不會打開任何http連接...

我怎樣才能找出爲什麼它不打開連接?

感謝,

編輯:

這裏是我使用多線程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答案:這就是調試器的用途。真正的答案:如果它無法連接到服務器,那麼它們將不會在TCPView中顯示爲OPEN。我們至少需要看一些代碼來幫助你弄清楚發生了什麼。 – 2012-03-03 05:53:42

回答

0

您可能通過代理連接互聯網檢查您的IE局域網設置。從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(); 
相關問題