【问题标题】:Remove 2 connections HttpWebRequest limitation in C#删除 C# 中的 2 个连接 HttpWebRequest 限制
【发布时间】:2016-06-28 01:01:39
【问题描述】:

我在使用 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();

我不使用并发线程,我什至没有设置“保持活动”并且网站不是 https,所以我想象请求和响应对象在超出范围时会被垃圾收集,仅此而已它(他们没有实现 IDisposible),但显然情况并非如此......

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

【问题讨论】:

    标签: c#


    【解决方案1】:

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

    配置:

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

    代码:

    System.Net.ServicePointManager.DefaultConnectionLimit = 100;

    【讨论】:

    • 这段代码去哪了,我的项目是一个dll,我可以更改dll上的配置吗?
    • 如果你想改变内部配置。只需添加主项目的配置文件即可。或者只在你的 DLL 中添加一行代码。
    【解决方案2】:

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

    resp.Close();
    

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

    【讨论】:

    • 嘘,太尴尬了,非常感谢,解决了我的问题
    猜你喜欢
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多