Warum ist HttpClient ist GetStringAsync ist unglaubliche langsam?

Ich habe ein Windows Phone 8 Projekt wo ich habe die Verwendung der PCL (Portable Class Library) Projekt zu, da werde ich bauen, eine Win8 app.

Jedoch beim aufrufen von mein-api (in Azurblau) meine HttpClient ist GetStringAsync so langsam ist. Ich warf ein paar debug datetime und GetStringAsync dauerte 14 Sekunden! Und manchmal dauert es länger.

Was ich Tue, ist das abrufen von einfachen JSON aus meiner Azure-API-Website. Mein Android-client hat keine problem mit dem aufstehen, dass dieselben Daten in einem Bruchteil einer Sekunde... also ist es etwas, was ich bin fehlt?

Setup ist ziemlich straight-forward:

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("X-Token", "something");
string responseJSON = await client.GetStringAsync("url");

Habe ich Orte, die debug-Zeiten direkt vor und nach dem warten dort, zwischen es 14 Sekunden!

Weiss einer warum?

  • Haben Sie andere async-Methoden aufgerufen, in den call-stack? Sind Sie immer awaiting Sie? Manchmal ist eine langsame app bedeutet, dass Sie mit .Result irgendwo statt awaiting. Zum Beispiel string responseJSON = client.GetStringAsync("url").Result;.
  • Wie groß ist der string, der Ihre Uri zurück? Haben Sie versucht, z.B. mit WebClient auf WP8, wenn es große Geschwindigkeits-Unterschied? Was ist mit der Geschwindigkeit der Reaktion bei der Verwendung einfach im web-browser?
  • x im warten auf alle, aber auf die im moment gerade laufen, dass man. habe versucht mit. Ergebnis dauert ewig!
  • Suchan die Zeichenfolge 2,99 KB "groß". Ich habe ein schlichtes WP8 Projekt mit WebClient und dort funktioniert es einwandfrei! Warum nicht in der PCL mit HttpClient?
  • Sind Sie mit WIFI-oder Cellular-Verbindung (mit demselben Netzwerk wie android)? Ich benutze WebRequest, wie ich kann, Modell es während der unit-Tests.
  • Sind Sie auf der Messung diese unter dem debugger? Der debugger langsamer wird, während das Modul geladen und versucht zu Holen Symbolen, die skew-Messungen. Führen Sie die Messung auf dem Gerät, ohne den debugger. Wenn Sie sich reproduzieren können Ihre perf Problem mit einem code-snippet, das nicht mit Ihrem privaten Azure-Website bitte teilen Sie und ich glücklich sein würden, zu untersuchen.
  • Sie stellte diese Frage vor 3 Jahren, aber ich bin in genau dieses problem heute. Hast du jemals eine Lösung finden?

InformationsquelleAutor Jason94 | 2013-11-09
Schreibe einen Kommentar