快速HTTP调用ASP.Net

本文关键字:Net ASP 调用 HTTP 快速 | 更新日期: 2023-09-27 17:54:53

我用下面的代码发送一个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,我们支付了一大笔钱,我怀疑这也是他们的网络。

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

快速HTTP调用ASP.Net

在关闭之前尝试刷新。

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

还可以下载微软网络监视器,看看到底是你还是他们卡住了,你可以在这里下载…

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

我有几件事要做:

    我将分析上面的代码并得到一些确定的时间。
  1. 实现using语句,以便正确处置资源。
  2. 以异步风格编写代码,一旦开始,将会有很多IO等待。

你能在普通的ole浏览器中点击URL吗?那有多快?

你能在这段代码中点击其他URL(不是你的伴侣的)吗?那有多快?

你完全有可能被"延迟bug"咬了,从你的角度来看,即使你的伴侣的即时响应也会导致不可预测的延迟。

另一个想法:我注意到你的URL中的https。使用http会更快吗?