使用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不是这样的......
那么正在建立什么联系?它是如何持续存在的?
答案 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;