快速HTTP调用ASP.Net

时间:2011-05-05 20:18:50

标签: c# asp.net httpwebrequest httpwebresponse

我正在使用以下代码向第三方发送HTTPWebRequest。响应需要2到22秒才能回来。第三方声称,一旦收到它,他们立即发回回复,并且他们的其他合作伙伴都没有报告任何延迟(但我不确定我是否相信他们 - 他们之前已经撒谎)。

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并且我们正在付船,我怀疑它是他们的网络。

我只是想确保我的代码尽可能快,并且我没有做任何愚蠢的事情,因为在几周内,这段代码将会增加到每小时向第3部分运行20,000个请求。

3 个答案:

答案 0 :(得分:4)

在关闭前尝试冲洗。

streamOut.Flush();
streamOut.Close();

还要下载微软网络监视器以确定是否有你或他们,你可以在这里下载...

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=983b941d-06cb-4658-b7f6-3088333d062f&displaylang=en

答案 1 :(得分:2)

我会做一些事情:

  1. 我会描述上面的代码,并获得一些明确的时间。
  2. 实施using语句以正确处理资源。
  3. 以异步方式编写代码,一旦其渐变,就会有大量的IO等待。

答案 2 :(得分:1)

您可以在常规浏览器中点击该网址吗?这有多快?

您可以在此代码中点击其他网址(不是您的合作伙伴)吗?这有多快?

完全有可能你被“延迟错误”所困扰,即使你的合作伙伴立即做出反应,也会导致从你的角度出现不可预测的延迟。

另一个想法:我注意到您网址中的https。使用http是否更快?