2012-03-03 12 views
1

서버에 연결하여 다른 정보를 가져 오는 클라이언트 응용 프로그램을 개발합니다. 다중 스레드 응용 프로그램입니다. 몇 개의 스레드로 시작하면 완벽하게 작동합니다. 은 때까지 다음 메시지와 함께 예외를 던지기 시작합니다HttpWebRequest : 원격 서버에 연결할 수 없습니다.

내가 TCPView를 사용했습니다 내 클라이언트 응용 프로그램에 대해 아무것도 찾을 수 없습니다

"원격 서버에 연결할 수 없습니다." 그래서 "Unable to Connect"를 반환하면 HTTP 연결도 OPEN하지 않습니다 ...

연결이 열리지 않는 이유는 무엇입니까?

감사합니다,

편집 : 몇 분 스레드와주기에 점점 후

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; 

: 여기

내가 페이지의 콘텐츠를 fecth 여러 스레드에서 사용하고 코드입니다 시간 초과 예외 또는 서버에 연결할 수 없습니다.

피들러를 시작하면 연결이 다시 활성화되고 스레드가 얼마 동안 계속 작동한다는 이상한 점이 있습니다. Fiddler는 어떻게 문제를 해결합니까?

+0

답변 : 디버거가 무엇입니까? 진짜 대답 : 서버에 연결할 수없는 경우 TCPView에 OPEN이 나타나지 않습니다. 우리는 최소한 당신이 무슨 일이 일어나는지 알아내는 데 도움이되는 몇 가지 코드를보아야 할 것입니다. –

답변

0

인터넷을 통해 프록시를 통해 인터넷에 연결할 수 있습니다. 인터넷 익스플로러 설정을 확인하십시오. 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(); 
관련 문제