在C#中删除2个连接HttpWebRequest限制

时间:2016-06-28 01:01:40

标签: c#

使用HttpWebRequest类通过http 1.1访问网站时遇到问题。当我启动应用程序时,请求只会前两次运行,而不是超时。

显然,这完全是关于2个并发连接限制。

首先,我如何通过代码或更改清单来删除它? 二,如何强制使用http 1.0? 第三,这是我的代码:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); 
req.CookieContainer = Memory._Jar;

req.Method = "GET";
req.Host = url.Split(new string[] { "//" }, StringSplitOptions.None)[1].Split('/')[0];
req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
req.UserAgent = Memory._UserAgent;
req.Headers.Add("Accept-Encoding", "gzip, deflate, sdch");
req.Headers.Add("Accept-Language", "en-US,en;q=0.8");
req.AllowAutoRedirect = false;
req.Proxy = Memory._Proxy;
req.Timeout = Memory._Timeout;

HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

我没有使用concurent线程,我甚至没有设置"保持活力"并且该网站不是https,所以我想象请求和响应对象在超出范围时会收集垃圾,而这些都是关于它的(它们不会实现IDisposible),但很明显,&#39不是这样的......

那么正在建立什么联系?它是如何持续存在的?

2 个答案:

答案 0 :(得分:1)

您应该关闭响应对象上的连接:

resp.Close();

https://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.close

答案 1 :(得分:1)

默认情况下,连接限制为2.您可以从配置文件或代码级别更改它。

配置:

 <connectionManagement>
      <clear/>
      <add address="*" maxconnection="100" />
    </connectionManagement>

代码:

System.Net.ServicePointManager.DefaultConnectionLimit = 100;