2013-03-07 84 views
1

我發送的POST和GET WebRequest應該支持更長的互聯網停機時間。這個想法是對失敗的(超時)Web請求進行排隊,並嘗試定期重新發送它們,直到互聯網再次啓動併發送所有排隊的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()在同一個webrequest只是凍結。

+1

可能重複? - http://stackoverflow.com/questions/2179626/reuse-a-httpwebrequest和另一個 - http://stackoverflow.com/questions/4933450/can-i-reuse-httpwebrequest-without-disconnecting-from-the-server – Snixtor 2013-03-07 10:25:33

+0

該問題不會調用'Abort()'來請求。 – Sunkas 2013-03-07 10:30:03

回答

1

您不能在同一HttpWebRequest上多次撥打BeginGetResponse()。我不確定這是否支持.NET,但是Mono的實現是不可能的(並且不是很容易改變的)。請參閱Can I reuse HttpWebRequest without disconnecting from the server? - 底層網絡連接將被重新使用。

+1

謝謝。我通過創建一個圍繞WebRequest的封裝器來解決這個問題,該WebRequest存儲用於設置請求的數據。這是爲了能夠重新創建它。 – Sunkas 2013-03-08 08:39:24

+0

我喜歡這些答案。我發現如何去做,但我不想和別人分享。 – Gregg 2016-12-05 02:08:05