상황 : msdn에 설명 된대로 HttpWebRequest.BeginGetResponse를 사용하고있었습니다. 10 초마다 요청을 보내는 타이머가 있습니다. 테스트 할 때 XML 구조화 된 정보를 받았습니다.타이머가있는 비동기 HttpWebRequest 문제
결과 : 고객 위치에 있고 해당 도구를 실행하는 데 불완전한 (따라서 해석 할 수없는) xml (각 약 4KB)이 수신되었습니다. 브라우저에서 확인하고 완전히 볼 수 있습니다 (브라우저를 통한 동기식 요청이 분명합니다!). 내 수신 버퍼 크기를 콘텐츠 길이에 대한 헤더 정보를 사용했습니다.
원인은 무엇입니까? 나는 모른다. 데이터가 상당히 적습니다. 여전히 developer fusion에 설명 된 ThreadPool.RegisterWaitForSingleObject
접근 방식을 사용하여 제한 시간을 정의했으며, 제한 시간도 10 초로 선택했습니다. 어쩌면 그것은 현명한 결정이 아니었을 것입니다. 아마 타이머 간격보다 작아야합니다. 문제는 그 조건에서 다시 테스트 할 수 없다는 것입니다. 그것은 생산 현장에 있었고 네트워크 설치에 대한 통찰력이 없었습니다. reguests는 가정에서 동시에 잘 진행되었습니다.
필자는 그 분야에서 경험이 많지 않지만, 응답 스트림이 완전히 수신되기 전에 타이머가 새로운 요청을 트리거하면 어떻게되는지 예를 들어 보겠습니다. 타임 아웃 시간은 타이머 간격과 동일합니까? 여기 병목이 될 수있는 다른 힌트가 있습니까?
힌트를 주셔서 감사합니다. 실제로 Stream.Read 메서드를 오용 한 것으로 보입니다. – rdoubleui