我发送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()
时会冻结。
答案 0 :(得分:1)
您无法在同一BeginGetResponse()
上多次致电HttpWebRequest
。我不确定这是否支持.NET,但Mono的实现是不可能的(而且不容易改变)。
另请参阅Can I reuse HttpWebRequest without disconnecting from the server? - 将重用基础网络连接。