2016-09-09 2 views
0

In C#, ich habe eine Aufgabe erstellt zu laufen. Es läuft in Ordnung, aber nach 55+ bis 300 Wiederholungen dauert jede Schleife länger und länger. Was ist los mit dir?httpwebrequest verlangsamen in einer Weile Schleife

var task = Task.Run(() => 
     { 
      int i = 0; 
      string url = "http://xxxx/getall"; 
      string token = "dddd"; 
      string sendData = "{somejson}" 
      while (true) 
      { 
       //this gets slower and slower after 50-300+ repeats 
       HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);//create 
       req.Headers.Add("Authorization", token); 
       req.ContentType = "application/json"; 
       req.Accept = "application/json"; 
       req.Method = "POST"; 
       var stream_req = req.GetRequestStream();//create 
       byte[] reqdata = Encoding.UTF8.GetBytes(sendData); 
       stream_req.Write(reqdata, 0, reqdata.Length); 
       stream_req.Close(); 
       var response = req.GetResponse();//create 
       //get response 
       var reader = new StreamReader(response.GetResponseStream());//create 
       json = reader.ReadToEnd(); 
       reader.Close(); 
       response.Close(); 
       Console.WriteLine(i.ToString()+":"+json.Substring(0, 20)); 
       i++; 
      } 
     }); 
+0

Wird der Server langsamer oder der Client-Code? –

+0

Ist das eine Art Belastungstest? –

+0

Wozu dient 'Task.Run', wenn Sie die * blocking * -Version der Methoden verwenden? –

Antwort

0

Sorry, es wird nicht vom Client-Code, sondern von der Serverseite verursacht. Es stellt sich heraus, dass der Server einen automatischen Grenzwert hat, der bei Bedarf reagiert.

Ich habe getestet, dieses Codestück hat überhaupt kein Problem gegen einige andere Server-URL.