HttpWebRequest keep-alive-连接是如何被.net重用的

本文关键字:net keep-alive- 连接 HttpWebRequest | 更新日期: 2023-09-27 18:10:29

Hy,我在10个并发线程中使用HttpWebRequest来下载图像列表。我在hostName之后对图像进行了排序,所以每个线程都从同一个hostName中获得一个图像。

HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(url);
myReq.ServicePoint.ConnectionLimit = 10;
myReq.Timeout = 2000;
myReq.KeepAlive = true;
HttpWebResponse myResp = (HttpWebResponse )myReq.GetResponse();

程序运行一段时间后,我不断收到超时异常。我的想法是,我得到了例外,因为主机服务器可能对来自同一用户的并发连接有一些限制。

那么连接在.net中是如何重用的呢?在我的程序中,每个线程都在创建一个到主机名的新连接,或者因为KeepAlive属性而重用现有连接??

HttpWebRequest keep-alive-连接是如何被.net重用的

问题似乎出在一些使用http/1.0的服务器上。HttpWebRequest正在使用100 Continue行为,但服务器不支持它。

所以我把属性System.Net.ServicePointManager.Expect100Continue改为false,然后一切都很好。