快速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个请求到这第三部分
在关闭之前尝试刷新。
streamOut.Flush();
streamOut.Close();
还可以下载微软网络监视器,看看到底是你还是他们卡住了,你可以在这里下载…
http://www.microsoft.com/downloads/en/details.aspx?familyid=983b941d - 06 - cb - 4658 b7f6 - 3088333 - d062f& displaylang = en
我有几件事要做:
- 我将分析上面的代码并得到一些确定的时间。
- 实现using语句,以便正确处置资源。
- 以异步风格编写代码,一旦开始,将会有很多IO等待。
你能在普通的ole浏览器中点击URL吗?那有多快?
你能在这段代码中点击其他URL(不是你的伴侣的)吗?那有多快?
你完全有可能被"延迟bug"咬了,从你的角度来看,即使你的伴侣的即时响应也会导致不可预测的延迟。
另一个想法:我注意到你的URL中的https。使用http会更快吗?