2013-03-07 5 views
1

나는 POST와 GET WebRequest를 보내 오랜 기간의 인터넷 중단을 지원해야합니다. 아이디어는 실패한 (timedout) 웹 요청을 대기열에 넣고 인터넷이 다시 가동되고 대기중인 모든 WebRequest가 전송 될 때까지 정기적으로 다시 보내려고 시도하는 것입니다."실패한"WebRequest를 다시 보내려면 어떻게해야합니까?

그러나 이전 WebRequest를 재사용 할 수없는 것 같습니다. 다시 설치해야합니까?

IAsyncResult result = request.BeginGetResponse (o => { 
     callCallback (o); 
}, state); 

요청을 사용하여 바로 설치 인 경우 :

var request = HttpWebRequest.Create (String.Format (@"{0}/{1}", baseServiceUrl, path)); 
request.Method = "GET"; 
request.ContentType = "application/xml; charset=UTF-8"; 
request.Headers.Add ("Authority", account.Session); 
return request; 

가 잘 작동합니다. 그러나 시간 초과 (그리고 request.Abort();)와 동일한 웹 요청에 BeginGetResponse()를 부른 후에는 단지 멈추게됩니다.

+1

중복 될 수 있습니까? - http://stackoverflow.com/questions/2179626/reuse-a-httpwebrequest 그리고 다른 - http://stackoverflow.com/questions/4933450/can-i-reuse-httpwebrequest-without-disconnecting-from-the-server – Snixtor

+0

그 질문은'Abort()'를 요구하지 않습니다. – Sunkas

답변

1

동일한 HttpWebRequest에서 BeginGetResponse() 번을 여러 번 호출 할 수 없습니다. .NET에서 지원되는지 여부는 확실하지 않지만 Mono의 구현에서는 불가능합니다. 변경하기 쉽지는 않습니다.

도 참조하십시오. Can I reuse HttpWebRequest without disconnecting from the server? - 기본 네트워크 연결이 재사용됩니다.

+1

감사합니다. 요청을 설정하는 데 사용되는 데이터를 저장하는 WebRequest 주위에 래퍼를 만들어 해결했습니다. 이것을 다시 만들 수 있습니다. – Sunkas

+0

나는이 답변을 매우 좋아합니다. 나는 그것을하는 법을 알았지 만 나는 다른 사람들과 그것을 나누지 않을 것이다. – Gregg

관련 문제