Ich habe eine einfache Konsolenanwendung, die wie folgt aussieht:Wie ermittle ich die Anzahl gleichzeitiger Anfragen von einem asynchronen httpclient während der Ausführung?
private static StringBuilder sb = new StringBuilder();
private static HttpClient client = new HttpClient();
private static async Task<HttpStatusCode> AccessTheWebAsync()
{
HttpResponseMessage response = await client.GetAsync("http://www.google.com").ConfigureAwait(false);
return response.StatusCode;
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
List<Task> tasks = new List<Task>();
for (int i = 0; i < 10; i++)
tasks.Add(AccessTheWebAsync());
Task.WaitAll(tasks.ToArray());
foreach (Task<HttpStatusCode> t in tasks)
sb.Append((int)t.Result).Append(Environment.NewLine);
Console.WriteLine(sb.ToString());
sw.Stop();
Console.WriteLine("Run Completed, Time elapsed: {0}", sw.Elapsed);
Console.ReadLine();
}
Hier sie, dass ich initiieren 10 asynchrone Web-Anfragen und sammeln Sie die Antwortcodes, wenn die Anforderungen abgeschlossen und in der Liste sind.
- Frage: Ist es möglich, VS2012 zu verwenden, um die App so zu debuggen, wo ich die Anzahl der gleichzeitigen Web-Anfragen ermitteln kann, die während der Ausführung zu einem bestimmten Punkt passiert sind?
Grund dafür ist, fand ich heraus, gibt es etwas, das Sie auf dem App.config
ändern können:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.net>
<connectionManagement>
<add address = "*" maxconnection = "10" />
</connectionManagement>
</system.net>
</configuration>
Aber ich habe kein guter Weg, um zu bestimmen, ob dies tatsächlich funktioniert oder nicht.
Setzen Server diese Grenze?
Legt das Betriebssystem diese Grenze fest?
Legt diese App-Konfiguration und/oder .NET diese Grenze fest?
Nicht, dass irgendetwas mit dem, was Sie jetzt tun, falsch ist, aber nur zur Info, der HttpClient kann für mehrere gleichzeitige Anrufe allein verwendet werden - Sie müssen nicht N verschiedene Instanzen davon für N verschiedene Anrufe haben. –
@JamesManning OK, ich habe es stattdessen ein Feld gemacht. Vielen Dank! – user17753
Ist es Ihr Ziel, dies programmatisch zu verfolgen (z. B. für die Anzeige in einer Benutzeroberfläche) oder nur um das erwartete Verhalten zu überprüfen? –