【发布时间】:2011-08-19 16:52:12
【问题描述】:
我正在使用以下代码向第 3 方发送 HTTPWebRequest。响应需要 2 到 22 秒才能返回。第 3 方声称,一旦他们收到它,他们会立即回复,并且他们的其他合作伙伴都没有报告任何延迟(但我不确定我是否相信他们——他们以前撒过谎)。
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 个请求。
【问题讨论】:
-
你和目标服务器之间有代理吗?如果服务器的响应时间不是延迟,可能延迟实际上是建立连接。
-
雅各布,我不这么认为。至少不在我身边。不过,我敢打赌他们是站在他们这边的,这就是我要向他们证明的。
-
没有什么比证明别人的问题更能让美好的一天变糟的了。
标签: c# asp.net httpwebrequest httpwebresponse