문제

다른 서버에서 웹 서비스를 폴링하는 웹 응용 프로그램이 있습니다. 서버는 동일한 네트워크에 있으며 포트 8080에서 실행되는 내부 IP로 참조됩니다.

15 초마다 요청이 전송되어 작업 정보가있는 XML 응답을받습니다. 시간의 95%, 이것은 잘 작동하지만 무작위로 서버에 대한 요청은 null이며 "원격 호스트가 강제로 닫힌 응답"을보고합니다.

이 문제를 연구하면서 다른 사람들은 recigalive = false를 설정했습니다. 이것은 문제를 해결하지 못했습니다. 웹 서버가 .NET 3.5 SP1을 실행 중입니다.

Uri serverPath = new Uri(_Url);

// create the request and set the login credentials
_Req = (HttpWebRequest)WebRequest.Create(serverPath);
_Req.KeepAlive = false;
_Req.Credentials = new NetworkCredential(username, password);
_Req.Method = this._Method;

응답으로 전화 :

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
_ResponseStream = response.GetResponseStream();

이것에 대한 방법은 얻는다. 타임 아웃을 변경하려고 시도했지만 기본값은 이것을 고려할만큼 충분히 큽니다.

우리가 수행하는 다른 요청은 데이터를 서버에 게시하는 게시물이며, 동일한 문제도 무작위로 얻고 있습니다. 이에 영향을 미치는 방화벽이 없으며 바이러스 스캐너를 배제했습니다. 이것을 해결하는 데 도움이되는 아이디어는 대단히 감사합니다!

도움이 되었습니까?

해결책

응답 스트림을 닫고 응답 자체를 폐기하고 있습니까? 이것이 WebRequest와 함께 "hangs"의 가장 빈번한 원인입니다. 동시에 동일한 기계에 열 수있는 연결 수에 제한이 있습니다. GC는 결국 연결을 마무리하지만, 제대로 처분하면 문제가되지 않습니다.

다른 팁

나는 네트워크 문제를 문제의 가능한 이유로 배제하지 않을 것입니다. 실패한 요청과 동일한 시간에 해당하는 패킷이 삭제되는지 확인하기 위해 서버로 핑을 실행 했습니까?

ftpwebrequest 객체의 타임 아웃 속성을 최대로 설정하여 4GB 파일로 시도해 보았습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top