Ich habe eine HTTP-basierte API, die ich möglicherweise mehrmals aufrufen muss. Das Problem ist, dass ich die Anforderung nicht weniger als 20 Sekunden dauern kann, obwohl die gleiche Anforderung, die über einen Browser gestellt wird, nahezu sofort ist. Der folgende Code zeigt, wie ich es bisher implementiert habe.So führen Sie eine schnelle Web-Anfrage in C#
WebRequest r = HttpWebRequest.Create("https://example.com/http/command?param=blabla");
var response = r.GetResponse();
Eine Lösung wäre eine asynchrone Anforderung zu machen, aber ich möchte wissen, warum es so lange dauert, und wenn ich es vermeiden kann. Ich habe auch versucht, die WebClient-Klasse zu verwenden, aber ich vermute, dass es intern eine WebRequest verwendet.
Update:
den folgenden Code Lauf dauerte etwa 40 Sekunden in der Release-Modus (gemessen mit Stoppuhr):
WebRequest g = HttpWebRequest.Create("http://www.google.com");
var response = g.GetResponse();
ich an einer Universität bin zu arbeiten, wo es verschiedene Dinge sein könnte in Die Netzwerkkonfiguration wirkt sich auf die Leistung aus, aber die direkte Verwendung des Browsers zeigt, dass sie fast sofort verfügbar sein sollte.
Update 2:
hochgeladen ich den Code auf einen Remote-Rechner und es funktionierte gut, so ist festzustellen, dass der .NET-Code tut etwas extra im Vergleich zum Browser oder es hat Probleme die Adresse durch Auflösen das Universitätsnetzwerk (Proxy-Probleme oder etwas ?!).
Wie haben Sie festgestellt, dass es die Web-Anfrage ist, die Zeit braucht? Ich habe normalerweise keine Leistungsprobleme mit der HttpWebRequest-Klasse. Haben Sie versucht, die Anwendung mehrere Anrufe auszuführen, und wenn ja, haben alle Anrufe so viel Zeit in Anspruch genommen? –
Erfolgt dies bei allen URLs wie google.com? Was ist mit der Verwendung einer Nicht-SSL-URL? – tbreffni
Ja, Fredriks Kommentare und Vorschläge sind gut. Es gibt keinen Grund, dass HttpWebRequest in irgendeiner Weise schlechte Leistung (geschweige denn * das * schlecht) haben sollte - immerhin verwendet es das gleiche Protokoll wie der Browser. – Noldorin