2011-05-04 2 views
3

데이터를 다운로드하는 동안 "작업 시간이 초과되었습니다"라는 오류가 표시되는 문제가 있습니다.해결 방법 "작업 시간이 초과되었습니다."오류

이 오류를 해결하려면 어떻게해야합니까? 나는 Win forms (C#)을 사용하고있다. 나의 코드는 그것을 확인하고 제안한다. 코드를 어디에서 변경해야합니까?

public void ProcessData() 
     { 


      try 
      { 
      string MessageTitle = ""; 
      int pages = Convert.ToInt32(txtPages.Text); 

      for (int k = Count; k <= pages; k++) 
      { 

       string url = "http://www.yellowpages.com/" +StateName.ToLower()+ "/" + CategoryName + "?g=" + StateName + "&page=" + k + "&q=" + CategoryName + "";//txtYP.Text + k; 
       System.Net.HttpWebRequest httpRequest; 
       System.Net.HttpWebResponse httpResponse; 
       System.IO.StreamReader SReader; 
       string html; 
       httpRequest = (System.Net.HttpWebRequest)(System.Net.HttpWebRequest.Create(url)); 
       httpRequest.Method = "GET"; 
       httpResponse = (System.Net.HttpWebResponse)(httpRequest.GetResponse()); 
       SReader = new StreamReader(httpResponse.GetResponseStream()); 
       html = SReader.ReadToEnd(); 
       string strDummy = html; 
       httpResponse.Close(); 

답변

1

요청이 시간 초과되기까지 얼마나 걸립니까? 웹 브라우저에서 URL을 탐색 할 수 있습니까?

HttpWebRequest의 HttpWebRequest.ReadWriteTimeout 속성을 현재 값보다 훨씬 더 높게 설정하십시오. 기본값은 5 분입니다. 5 분 이상 걸리는 이유를 모릅니다.

getresponse를 차단하는 대신 비동기 콜백 (BeginGetResponse/EndGetResponse)을 사용할 수 있습니다.

<system.diagnostics> 
    <trace autoflush="true" /> 
    <sources> 
    <source name="System.Net"> 
     <listeners> 
     <add name="System.Net"/> 
     </listeners> 
    </source> 
    <source name="System.Net.HttpListener"> 
     <listeners> 
     <add name="System.Net"/> 
     </listeners> 
    </source> 
    <source name="System.Net.Sockets"> 
     <listeners> 
     <add name="System.Net"/> 
     </listeners> 
    </source> 
    <source name="System.Net.Cache"> 
     <listeners> 
     <add name="System.Net"/> 
     </listeners> 
    </source> 
    </sources> 
    <sharedListeners> 
    <add 
     name="System.Net" 
     type="System.Diagnostics.TextWriterTraceListener" 
     initializeData="trace.log" 
     traceOutputOptions = "ProcessId, DateTime" 
      /> 
    </sharedListeners> 
    <switches> 
    <add name="System.Net" 
     value="Verbose" /> 
    <add name="System.Net.Sockets" 
     value="Verbose" /> 
    <add name="System.Net.Cache" 
     value="Verbose" /> 
    <add name="System.Net.HttpListener" 
     value="Verbose" /> 
    </switches> 
</system.diagnostics> 

편집 응용 프로그램의의 app.config에 configuration 섹션 내에서이 섹션을 추가합니다. 위의 내용을 추가 한 후 솔루션을 다시 빌드하고 실행하십시오. 자세한 내용은 응용 프로그램의 bin 디렉토리에 작성된 trace.log를보십시오.

+0

응답을 주셔서 감사합니다. 예, 웹 브라우저에서 URL을 탐색 할 수 있습니다 ... Httprequest 시간을 설정하는 방법 helpme ... 코드를 작성할 수있는 곳 ... –

+0

왜이 오류를 표시하고 있습니까? "요청이 중단되었습니다. 예기치 않게 연결이 끊어졌습니다." –

+0

당신이 요청으로 소유하지 않고 방화벽 \ bot 대책에 의해 차단되는 사이트를 망치질하고있는 것처럼 보입니다. – Arunas

0

코드에 이것을 추가 :

httpRequest.Timeout = 3600000;

이렇게하면 요청 시간이 1 시간으로 증가합니다.

+0

안녕하세요 고맙습니다. 실제로 우리는 그것이 걸리는 시간이 5 시간인지 7 시간인지를 알지 못합니다 ..... –

+0

10 시간을 넣으십시오. 일부 프로그램에는 거의 24 시간 동안 시간 초과가 있습니다. 그들의 요구. 그래서 잘 테스트되었습니다. – Arrabi