Ich verwende einen WebApi Rest Service Controller, der von IIS 7.5 gehostet wird. wie ich von diesem Beitrag verstanden habe:
Sind alle Web-Anfragen ausgeführt? parallel und asynchron behandelt?
Ein webApi -Dienst führt standardmäßig alle eingehenden Anforderungen parallel aus, aber nur , wenn die aktuellen Mehrfachanforderungen (zu einem bestimmten Zeitpunkt) Zeit) kam von verschiedenen Sitzungen. Das heißt, wenn ein einzelner Client einige gleichzeitige Anforderungen an den Server sendet, werden alle nacheinander ausgeführt und nicht gleichzeitig ausgeführt .
Dieses Verhalten ist ein echtes Problem für uns, da unser Client in einigen Fällen Anfragen von den Listenern verschiedener Clients asynchron (nach Browser) sendet und alle tatsächlich sind > in der Warteschlange anstatt gleichzeitig auf dem Server ausgeführt zu werden . Daher treten in einigen Fällen schwerwiegende Leistungsprobleme auf, die sich auf der Webseite des Kunden bemerkbar machen.
Wie können wir dieses Problem lösen? Ich verstehe, dass wir vielleicht den Sitzungsstatus deaktivieren können , aber das ist keine normale Sache.
Tatsächlich ist das Deaktivieren des Sitzungsstatus die normale Lösung für Web-APIs. Wenn Sie es für einige / alle Ihrer Anrufe benötigen, können Sie HttpContext.SetSessionStateBehavior aufrufen (z. B. von Application_BeginRequest
). Mehrere schreibgeschützte Sitzungsstatusanforderungen können gleichzeitig ausgeführt werden.
Versuchen Sie eine asynchrone Aufgabe? Hier ist Beispiel Controller:
%Vor%Tags und Links asp.net-mvc asp.net-web-api c# multithreading session-state