【问题标题】:HttpWebRequest - Reuse TCP connectionsHttpWebRequest - 重用 TCP 连接
【发布时间】:2012-05-27 22:13:21
【问题描述】:

我正在按照您的意图使用 HttpWebRequest:在我完成响应后处理它,希望这将使它重用任何可用的 TCP 连接,但它没有:它关闭收到响应后的连接。我在使用 TCPView 时看到了这种情况。

这是我的 HttpWebRequest 代码:

 private HttpWebResponse ExecuteRequest(String baseRelativeUri, String method, Ds postValues) {

        /////////////////////////////////////////
        // Set-up

        Uri uri = new Uri( _baseUri, baseRelativeUri );

        _cookies.ProcessDomains();

        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create( uri );
        request.CookieContainer = _cookies;
        request.Method          = method;
        request.UserAgent       = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0";

        if( postValues != null ) SetPostContent( request, postValues );

        /////////////////////////////////////////
        // Response

        return (HttpWebResponse)request.GetResponse();
    }

    protected HtmlDocument ExecuteRequestHtml(String baseRelativeUri, String method, Ds postValues, HttpStatusCode expectedStatusCode) {

        using(HttpWebResponse response = ExecuteRequest(baseRelativeUri, method, postValues)) {

            if( response.StatusCode != expectedStatusCode ) throw new WebException("Did not receive " + expectedStatusCode + " response.");

            /////////////////////////////////////////
            // HtmlDocument

            using(Stream stream = response.GetResponseStream()) {

                HtmlDocument doc = new HtmlDocument();
                doc.Load( stream );
                return doc;
            }
        }
    }

根据 MSDN,HttpWebRequest.KeepAlive 属性默认为 true,HttpWebRequest.Pipelines 也是如此。那我做错了什么?

谢谢!

【问题讨论】:

    标签: tcp httpwebrequest connection


    【解决方案1】:

    事实证明,我遇到了 HttpWebRequest 尊重的“每个主机同时连接 2 个”规则。

    解决办法是设置这个静态属性:

    System.Net.ServicePointManager.DefaultConnectionLimit = 15;
    

    排序:)

    【讨论】:

      猜你喜欢
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      • 1970-01-01
      相关资源
      最近更新 更多