在Windows7上GetWebResponse非常慢

时间:2013-05-06 05:57:09

标签: c#

我已经尝试了所有设置,我在互联网上找到了在Windows7机器上快速制作C#webclient 无济于事。对于每个请求,Windows XP计算机上的相同exe响应时间少于100毫秒。

我在派生类中重写了GetWebRequest函数 的 System.Web.Services.Protocols.SoapHttpClientProtocol

    protected override WebRequest GetWebRequest(Uri address)
    {
        //ServicePointManager.UseNagleAlgorithm = false;
        HttpWebRequest.DefaultWebProxy = null;
        ServicePointManager.DefaultConnectionLimit = 4096;
        ServicePointManager.Expect100Continue = false;
        System.Net.ServicePointManager.CheckCertificateRevocationList = false;
        HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
        request.Proxy = HttpWebRequest.DefaultWebProxy;

        return (WebRequest)request;
    }

受保护的覆盖WebResponse GetWebResponse(WebRequest请求)         {

        HttpWebResponse response = null;
        //HttpWebRequest.DefaultWebProxy = null;
        //ServicePointManager.Expect100Continue = false;
        response = (HttpWebResponse)base.GetWebResponse(request);
        return response;
    }

我还在machine.config .Net4.0文件夹中添加了套接字跟踪设置 并且它总是在输出窗口中等待以下语句7-15秒

System.Net.Sockets详细:0:[6088]套接字#54042743 ::接收()

希望有些冠军已经解决了这个问题

2 个答案:

答案 0 :(得分:1)

尝试使用GetResponse类并检查是否发现了一些差异:

HttpWebRequest wrequest = (HttpWebRequest) WebRequest.Create(objeto.Url);

//Get Response
HttpWebResponse wresp = (HttpWebResponse) wrequest.GetResponse();

//get Response Stream
StreamReader sr = new StreamReader(wresp.GetResponseStream());

//Get string content
string respuestastring = sr.ReadToEnd();

答案 1 :(得分:0)

我遇到了同样的问题,事实证明我没有关闭网络请求,所以当我连续发射几个时,我达到了主机允许的最大连接数,但它不会继续,直到第一个请求超时。因此,请尝试手动关闭请求,或者更好地将请求的变量声明包装到using指令中。