2010-08-15 6 views
1

J'ai envoyé de nombreuses requêtes http dans le cycle avecGetResponse() seulement lent sur mon ordinateur

WebRequest request = (WebRequest)WebRequest.Create(str); 

Cette ligne prend environ 500ms sur mon ordinateur

WebResponse response = request.GetResponse(); 

sur d'autres ordinateurs sur le réseau : 10-20ms

comment réparer ce bogue? Pour quelles raisons les autres ordinateurs du réseau peuvent-ils remplir leur demande plus rapidement? Il n'y a pas de proxy installé et la demande est 127.0.0.1:port.

Code

pour journal

Chaîne IdHTTPUt_Get (string str) { res string = "";

DateHeure dt = DateTime.Now;

WriteLog ("begin");

WriteLog ((DateTime.Now - dt) .ToString()); dt = DateTime.Now;

Requête WebRequest = (WebRequest) WebRequest.Create (str);

WriteLog ((DateTime.Now - dt) .ToString()); dt = DateTime.Now;

request.Credentials = nouveau NetworkCredential (opt_Utor_User, opt_Utor_Password);

request.Method = "GET";

WriteLog ((DateTime.Now - dt) .ToString()); dt = DateTime.Now;

request.Proxy = null;

utilisant (réponse WebResponse = request.GetResponse())

{

WriteLog ((DateTime.Now - dt) .ToString()); dt = DateTime.Now;

Flux receiveStream = réponse.GetResponseStream();

WriteLog ((DateTime.Now - dt) .ToString()); dt = DateTime.Now;

StreamReader ReadStream = new

StreamReader (receiveStream, Encoding.UTF8);

WriteLog ((DateTime.Now - dt) .ToString()); dt = DateTime.Now;

res = lectureStream.ReadToEnd();

WriteLog ((DateTime.Now - dt) .ToString()); dt = DateTime.À présent;

receiveStream.Close();

readStream.Close();

}

WriteLog ((DateTime.Now - dt) .ToString()); dt = DateTime.Now;

return res;

}

Répondre

0

Quelle ligne prend le temps - WebRequest.Create ou request.GetResponse()?

Êtes-vous disposé de la réponse à la fin? Il devrait être dans une déclaration à l'aide:

using (WebResponse response = request.GetResponse()) 
{ 
    ... 
} 

Le pool de connexion limite le nombre de connexions que vous pouvez faire à un hôte particulier - dans ce cas, vous finiriez en attendant le garbage collector pour libérer une réponse plus tôt. Que peut ne pas être le problème, mais je ne serais pas surpris de le trouver.

EDIT: Bien sûr, l'autre possibilité est de prendre beaucoup de temps pour traiter la requête sur votre machine. Que fait la demande? Si vous faites la même demande de autres machines (mais toujours à votre machine) combien de temps cela prend-il?

+0

commencent 00: 00: 00,0050003 00:00:00 00:00:00 00: 00: 00,5270301 00:00:00 00:00:00 00: 00:00 00:00:00 – AlexGu

+0

(réponse WebResponse = request.GetResponse() prend 527ms – AlexGu

+0

d'autres mashine à local (api utorrent Web) adn de fin de travail mashine distant. un bug dans IE (demande est traitée avec IE?) .. – AlexGu

Questions connexes