【发布时间】:2011-10-06 08:10:04
【问题描述】:
嘿, 我在 10 个并发线程中使用 HttpWebRequest 来下载图像列表。我在主机名之后对图像进行了排序,因此每个线程都从相同的主机名获取图像。
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(url);
myReq.ServicePoint.ConnectionLimit = 10;
myReq.Timeout = 2000;
myReq.KeepAlive = true;
HttpWebResponse myResp = (HttpWebResponse )myReq.GetResponse();
程序运行一段时间后,我不断收到超时异常。 我的想法是我得到了异常,因为主机服务器可能对来自同一用户的并发连接有一些限制。
那么如何在 .net 中重用连接? 在我的程序中,每个线程都在创建与主机名的新连接,或者由于 KeepAlive 属性而重用现有的连接??
【问题讨论】:
-
“在我的程序中,每个线程都在创建与主机名的新连接,或者由于 KeepAlive 属性而重用现有连接?”的结果是什么?
-
对于支持 http 1.1 协议的服务器,它正在重用连接。同时从同一个域请求图像也很重要,这样我就不会经常打开超过 10 个连接。即使您正在完成一个请求,.Net 也有一种自动执行此操作的方法。
标签: c# .net httpwebrequest http-headers