C# HTTPWebResponse和StreamReader需要两倍的时间
使用ajax发出请求,在Internet Explorer上需要13秒C# HTTPWebResponse和StreamReader需要两倍的时间,c#,asp.net,.net,streamreader,httpwebresponse,C#,Asp.net,.net,Streamreader,Httpwebresponse,使用ajax发出请求,在Internet Explorer上需要13秒 var start = new Date().getTime(); var xmlRequest = ""; //XML REQUEST var xmlHttp=null try { xmlHttp=new XMLHttpRequest(); } catch (e) { try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); }
var start = new Date().getTime();
var xmlRequest = ""; //XML REQUEST
var xmlHttp=null
try { xmlHttp=new XMLHttpRequest(); }
catch (e)
{
try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); }
}
var sURL = ""; //DESTINATION URL
xmlHttp.open("POST", sURL, false);
xmlHttp.setRequestHeader("Content-Type","text/xml");
xmlHttp.send(xmlRequest);
var end = new Date().getTime();
var time = end - start;
alert('Execution time: ' + time); // 13 seconds
alert("Response:\n" + xmlHttp.responseText); //XML RESPONSE
xmlHttp.close();
现在,尝试服务器端:
public string MakeWebRequest(string url, string xmlRequest)
{
try
{
string responseContent;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
byte[] byteArray = Encoding.UTF8.GetBytes(xmlRequest);
request.ContentType = "text/xml";
request.ContentLength = byteArray.Length;
//request.Proxy = null;
//request.Proxy = WebRequest.GetSystemWebProxy();
request.Proxy = System.Net.WebRequest.DefaultWebProxy;
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(byteArray, 0, byteArray.Length);
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader sr = new StreamReader(responseStream))
responseContent = sr.ReadToEnd();
}
}
return responseContent;
}
catch (Exception ex)
{
return ex.Message;
}
}
相同的URL和相同的xml请求,需要40秒才能响应,为什么
与以下结果相同:
request.Proxy = null;
以及:
以及:
以及:
以及:
谢谢你的帮助 OMFG!我终于找到了解决办法! 我使用wireshark查看请求头。 HttpWebRequest默认情况下添加“Expect:100-continue”。 我必须删除参数才能工作
request.ServicePoint.Expect100Continue = false;
两个请求都是从同一台计算机发出的?你所说的服务器端是什么意思?是的,是同一台计算机!服务器端->C#您是否尝试过在编写响应后计算时间?Ajax是异步的,你知道是的,13秒,我有答案。你有没有做过基准测试,看看哪个方法调用花费的时间最长?
request.Proxy = System.Net.WebRequest.DefaultWebProxy;
<system.net>
<defaultProxy enabled="false">
<proxy/>
<bypasslist/>
<module/>
</defaultProxy>
</system.net>
<system.net>
<connectionManagement>
<add address="*" maxconnection="65000" />
</connectionManagement>
</system.net>
request.ServicePoint.Expect100Continue = false;