2015-02-01 2 views
1

일련의 웹 페이지에서 데이터를 읽는 프로그램을 작성하고 있습니다. 이것은 첫 번째 페이지에서 작동하지만 시간이 초과 될 때까지 다음 페이지의 응답을 기다리는 동안 멈 춥니 다. 내가 1 페이지, 2 페이지, 140 페이지 등을 읽음으로써 시작하든 항상 첫번째 페이지를 읽지 만 그 이후에는 아무 것도 읽지 못합니다.WebResponse Timeout

나는 이것이 웹 사이트가 사용자가 먼저 로그인해야하기 때문에 페이지에 액세스하는 데 필요한 "cookieHeader"변수와 관련 있다고 생각합니다. 그러나이 요소를 검사 할 때 만료 시간은 다음날로 설정되므로 아직 만료 될 수는 없습니다.

저는이 문제에 익숙하지 않기 때문에 이전에이 문제가 발생했거나 쿠키를 더 잘 이해 한 사람이 나를 도울 수 있기를 바랍니다. 나는 어떤 의견을 주셔서 감사하겠습니다! 다음은 타임 아웃 오류가 try-catch 래퍼에 의해 포착 된 코드 스 니펫입니다.

// loop through each page 
for (int i = 1; i <= totalPages; i++) 
{ 
    string thisUrl = chatUrl + i; //add page number to url 
    WebRequest getReq = WebRequest.Create(thisUrl); 
    getReq.Headers.Add("Cookie", cookieHeader); 
    try 
    { 
     WebResponse getResp = getReq.GetResponse(); 
     Console.WriteLine("Page " + i + " read successfully"); 
    } 
    catch (Exception e) 
    { 
     Console.WriteLine("Page " + i + " failed"); 
    } 
} 
+0

요청이 실패하는 경우가 있습니다. 도우미 메서드를 요청하고 try-catch를 3 번 ​​시도해 궁극적으로 예외를 다시 시도 할 수 있습니다. 다시 시도하면 아무런 도움이 안됨을 나타냅니다. – SimpleVar

+0

그것은 일정한 것 같습니다; 첫 번째 페이지를 읽은 후에 다른 모든 페이지가 실패하고 실패하기 전에 시간이 오래 걸리므로 재 시도하는 데 시간이 많이 걸릴 수 있습니다 (현재 5 페이지가 실패한 6 페이지에서 약 7 분이 걸리고 읽는 페이지가 100 개 이상 있습니다).) – user1959309

+1

Fiddler (http://www.telerik.com/download/fiddler)는 보내지고 돌려 보내지는 것을 분류하는 데 도움이 될 것입니다. 아마도 두 번째 GET에 문제가있을 것이고 피들러 (fiddler)는 당신이 누락 된 부분을 보도록 도와 줄 것입니다. –

답변

2

응답을 올바르게 닫지 않는 것과 관련이 있다고 생각합니다. WebResponse는 올바르게 기억한다면 IDisposable을 구현합니다. 그래서 문장을 사용하여 처분 해보십시오. 또한 일부 클라이언트 버전의 .Net에는 몇 가지 제한 사항이 있습니다. 기본적으로 동일한 서버에 대해 2 개의 연결 만 동시에 열 수 있습니다. 이 제한은 연결 (WebResponse)을 적절히 처리하지 않을 수도 있습니다 (활성 상태로 유지 될 수 있기 때문일 수 있음).

+0

정확한 문제였습니다. 감사합니다! 내 try 블록에서 WebResponse를 닫았으며 이제는 정상적으로 작동합니다. – user1959309