如何重新发送“失败的”WebRequest?

时间:2013-03-07 10:03:11

标签: c# mono webrequest

我发送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 ();)之后并且在同一个webrequest上调用BeginGetResponse()时会冻结。

1 个答案:

答案 0 :(得分:1)

您无法在同一BeginGetResponse()上多次致电HttpWebRequest。我不确定这是否支持.NET,但Mono的实现是不可能的(而且不容易改变)。

另请参阅Can I reuse HttpWebRequest without disconnecting from the server? - 将重用基础网络连接。