您的位置:首页 > 理论基础 > 计算机网络

HttpWebRequest.GetRequestStream方法timeout的原因及解决办法

2012-05-18 17:08 513 查看
最近在使用HttpWebRequest时,发现对某些网站GetRequestStream只能发两次,第三次开始就会超时,抛出异常,而对另一些网站则完全没有问题。

[c-sharp:nogutter] view plaincopy

// Send the data.

Stream stmRequest = httpRequest.GetRequestStream();

stmRequest.Write(btData, 0, btData.Length);

stmRequest.Close();

个问题让我相当郁闷,不知该从哪下手解决,因为找不到原因。后来,在网上查了些资料,有人说这是一个bug,但似乎不太可能,因为HttpWebRequest这个类由来已久,从.NET Framework 1.0时就已经存在了。
最后,终于在这里找到了答案http://www.dotnetmonster.com/Uwe/Forum.aspx/dotnet-compact-framework/5443/Timeout-in-HttpWebRequest-GetRequestStream
问题产生的原因是我在后面的代码里用GetResponseStream生成了一个stream以读取返回结果,但却一直没有关掉。。。

[c-sharp:nogutter] view plaincopy

HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse();

Stream stmResponse = httpResponse.GetResponseStream();

解决办法,当然是要在使用完这个stream后将其关掉了:

[c-sharp] view plaincopy

stmResponse.Close();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐