我正在发送一个HTTPWebRequest到下面的代码的第三方。响应需要2到22秒才能回来。第三方声称,一旦他们收到它,他们立即发回应答,并且他们的其他合作伙伴都没有报告任何延迟(但我不确定我相信他们 - 他们之前撒谎了)。快速HTTP调用ASP.Net
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.example.com");
request.Timeout = 38000;
request.Method = "POST";
request.ContentType = "text/xml";
StreamWriter streamOut = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII);
streamOut.Write(XMLToSend); // XMLToSend is just a string that is maybe 1kb in size
streamOut.Close();
HttpWebResponse resp = null;
resp = (HttpWebResponse)request.GetResponse(); // This line takes between 2 and 22 seconds to return.
StreamReader responseReader = new StreamReader(resp.GetResponseStream(), Encoding.UTF8);
Response = responseReader.ReadToEnd(); // Response is merely a string to hold the response.
是否有任何理由,上面的代码只会...暂停?代码运行在一个非常坚实的托管服务提供商(Rackspace Intensive Segment)中,并且它所在的机器没有被用于其他任何事情。我只是测试一些我们即将投入生产的代码。所以,并不是机器被征税,并且考虑到它是Rackspace,并且我们正在支付一大笔费用,我怀疑这是他们的网络。
我只是想确保我的代码是尽可能快的,而且我没有做任何愚蠢的事,因为在几个星期内,这个代码将上升到运行20,000个请求,以这个第三部分每小时。
你和目标服务器之间是否有代理?如果服务器的响应时间不是延迟,那么延迟实际上可能是建立连接。 – Jacob 2011-05-05 20:23:31
雅各布,我不这么认为。至少不在我身边。我敢打赌,他们确实在他们身边,而这正是我想向他们证明的。 – 2011-05-05 20:35:38
没有什么能让一个美好的一天变得糟糕,就像不得不证明别人的问题一样。 – 2011-05-05 20:47:20