2011-08-30 2 views
20

나는 HttpWebRequest.TimeoutHttpWebRequest.ReadWriteTimeout 사이의 실제적인 차이점을 이해한다고 생각합니다. 그러나 추가이 두 값의 차이에 대한 명확성을 찾으려고합니다. 기본 값과 관련하여이 값이 의미하는 것을 포함하여 TCP 연결/버퍼/상태 입니다.HttpWebRequest의 Timeout 및 ReadWriteTimeout - 기본 TCP 연결에 대한 의미는 무엇입니까?

예를 들어 이러한 제한 시간은 TCP 연결을 초기화하는 동안에 만 사용됩니까 아니면 관리되지 않는 연결을 감시하기 위해 관리되는 값입니까?

각 시간 초과가 적용되거나 적용되지 않는 TCP 용어로 클라이언트 - 서버 시나리오 란 무엇입니까?

답변

13

이 문제는 다른 질문에 대해 토론되었습니다. Adjusting HttpWebRequest Connection Timeout in C#을 참조하십시오. 토론이 머리를 스핀으로 만들었으므로 요약을 제공 할 것입니다.

MSDN은 HttpWebRequest.Timeout PropertyHttpWebRequest.GetResponse 및호출에 적용되지만 설명은 약간 혼란 스럽다고 설명합니다. "Timeout"은 서버가 요청에 응답하는 시간이며 서버가 응답하고 모든 데이터를 보내는 데 걸리는 시간이 아닙니다. " 따라서 Timeout은 작동 연결을 설정하는 것을 다룹니다. 대형 페이로드의 경우 이는 요청/응답이 완료되었음을 의미하지는 않습니다.

ReadWriteTimeout은 연결을 통해 전송하는 스트림에 대한 읽기 또는 쓰기 작업에 적용됩니다. 예 : GetRequestStream에 의해 리턴 된 스트림에 Write 할 때. 연결은 이미 설정되어 있지만 연결이 끊어 질 위험이 있습니다. 예 : 네트워크 연결이 끊어집니다.

Jim Mischel 링크에는 이러한 시간 제한을 설정할 값에 대한 아주 좋은 조언이 있습니다. 나는. ReadWriteTimeout의 기본값은 너무 깁니다.

+3

정보의 또 다른 재미있는 이야기는'HttpWebRequest.ReadWriteTimeout'는 설정으로 작동 기본'NetworkStream'의'WriteTimeout'과'ReadTimeout' 속성 ('System.Net'을 역순으로 배웠습니다). –

+0

주목할만한 점은'Timeout'은'ReadWriteTimeout'을 포함한다는 것입니다. 'Timeout' <'ReadWriteTimeout'을 가지고 있다면, 장기 실행 요청은 여전히 ​​타임 아웃 될 수 있습니다. 나는 처음으로 그것을 오해했다 ... – dstj

+0

ReadWriteTimeout = 300s 동안 @dstj timeout = 100s의 기본값. 따라서 기본적으로 Timeout codewarrior

4

.Timeout = 시간은 당신이 @에서 답의 첫 번째 부분을 가지고 생각 연결이

5

를 설립 한 후 .ReadWriteTimeout는 = 시간 데이터를 읽거나 쓰기를 시도하는 데 소요 (조회 시간을 포함하지 않음)에 연결을 시도 지출 Donal Lafferty. 어쨌든 빠른 요약이 있습니다.

HttpWebRequest.Timeout - 서버가 클라이언트 요청을 수락해야하는 시간입니다. 여기에는 ServicePointManager에서 관리하는 DNS 확인 시간이 포함되지 않습니다.

HttpWebRequest.ReadWriteTimeout - 클라이언트가 서버에서 전체 응답 본문을 수신해야하는 시간입니다. 이 제한 시간은 서버가 요청을 승인 한 후에 시작됩니다.

두 번째 질문에 대한 답변은 두 번 접혀 있습니다.

1. 동기 요청 :

연결 시간 제한에 폐쇄 된 TCP, 모두가 행복입니다.

2.비동기 요청 :

이러한 시간 초과는 전혀 영향을 미치지 않습니다. 시간 제한을 넘겨주는 적절한 메커니즘이 없다면 TCP 연결은 열린 채로 유지됩니다.

당신이 AsyncWaitHandle에 타임 아웃을 등록하여 요청을 중단 왜 여기에 예와 같이 정확하게 이유

:

http://msdn.microsoft.com/library/21k58ta7.aspx

관련 문제