同一个服务器的WebRequest最大连接数可以通过ServicePointManager的对应uri对象的属性ConnectionLimit进行修改,比如
Uri = new Uri("http://localhost");
ServicePoint spSite = ServicePointManager.FindServicePoint(uri);
spSite.ConnectionLimit = 4;
但是ServicePointManager.DefaultPersistentConnectionLimit和ServicePointManager.DefaultNonPersistentConncetionLimit都是常量,无法修改
那样修改了spSite.ConnectionLimit对于实际的WebRequest最大连接数会有作用吗?我想模拟多线程下载,所以建立了对同一url的多个连接,并且对应的Response数据流都没有关闭。我用如下代码进行测试,发现到了第三个连接还是没法响应,这是为什么呢?请高人指点指点
string theUrl = "http://localhost/real.rar";
Uri uri = new Uri(theUrl);
ServicePoint spSite = ServicePointManager.FindServicePoint(uri);
spSite.ConnectionLimit = 4;
Console.WriteLine("Current Connection: "+spSite.CurrentConnections);
Console.WriteLine("Conncetion limit: "+spSite.ConnectionLimit);
//test 1
HttpWebRequest requestTest1 = (HttpWebRequest)HttpWebRequest.Create(theUrl);
requestTest1.KeepAlive = false;
requestTest1.AddRange(0,65534);
Stream nsTest0 = requestTest1.GetResponse().GetResponseStream();
Console.WriteLine("Test 1 passed.");//test 2
HttpWebRequest requestTest2 = (HttpWebRequest)HttpWebRequest.Create(theUrl);
requestTest2.KeepAlive = false;
requestTest2.AddRange(65535,2442228);
Stream nsTest1 = requestTest2.GetResponse().GetResponseStream();
Console.WriteLine("Test 2 passed.");
Console.WriteLine("Current Connection: "+spSite.CurrentConnections);//test 3
HttpWebRequest requestTest3 = (HttpWebRequest)HttpWebRequest.Create(theUrl);
requestTest3.KeepAlive = false;
requestTest1.AddRange(2442229,4884458);
Stream nsTest2 = requestTest3.GetResponse().GetResponseStream();
Console.WriteLine("Test 3 passed.");