RFC 2616, the RFC for Hypertext Transfer Protocol -- HTTP/1.1."Clients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy. A proxy SHOULD use up to 2*N connections to another server or proxy, where N is the number of simultaneously active users. These guidelines are intended to improve HTTP response times and avoid congestion." 解决办法: 在machine.config的<system.net>节找到下面的节点,将autoconfig 改成true<ProcessModel> <autoconfig = "true"> </ProcessModel>
ServicePoint sp = wrt.ServicePoint;
sp.ConnectionLimit =1;
类似可是在那个问题机上使用sp.ConnectionLimit =99; 还是只有一个tcp连接在使用呢(在开发机上使用ConnectionLimit =1;只有一个连接,而不使用的话会有好多tcp连接)
还有LZ在提问题的时候最好把问题说清楚..你指的那个别电脑的配置怎么样?是什么OS....线程貌似和CPU有很大的联系...
祝LZ问题早日解决...嘎嘎...
不好意思呀,我文化水平不高虽然心里急但表述的都不是太清楚。 就是windows 2003服务器系统.另一个也是windows 2003系统正常的。。 系统的连接数改过的。都是正常的。而且限制系统tcp连接数的系统里其他线程是等待创建tcp连接。而这个系统竟然是多个线程共用一个tcp连接。就好像用lock锁定了一样的!
看看是不是多个线程阻塞的原因。
解决办法:
在machine.config的<system.net>节找到下面的节点,将autoconfig 改成true<ProcessModel>
<autoconfig = "true">
</ProcessModel>
你好。问题应该可以通过这个文件的某个设置修改通过。但上面那个 autoconfig 2.0里面都是默认存在的呀。 无论设定多少线程httpwebrequest都只使用一个tcp连接
你好。你的回复让我看到解决这问题的曙光了!!!正常的机上,多少个线程就开多少个tcp连接(一个线程都需要n次httprequest连接呢,为什么不像socket那样创建新的tcp连接端口同服务器通讯呢?这应该就是这位朋友说的全局httprequest了吧)可奇怪的是。。我的request是在多线程局部方法里面声明的呀。每次连接我都用 HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL); 。。郁闷死。。怎么真正设定他的局部变量呀
设为FALSE看看
但是如果设置成支持1.1,也许就会只用一个连接了??