Bevor Sie über das Downvooten oder sagen Sie mir "google es", lesen Sie bitte das Problem genauer. Dies ist ein altes/klassisches Problem, aber die alte/klassische Lösung funktioniert nicht mehr. Hier ist sehr einfaches Szenario in Visual Studio 2013/2015 zu reproduzieren:ASP.NET MVC 5 gleichzeitige Anfragen sind in der Warteschlange auch mit deaktivierter Sitzung
1) Erstellen von ASP.NET-Anwendung mit MVC-Vorlage:
2) öffnen Controller \ HomeController.cs und fügt Attribut Controller und "Sleep" Aktion:
[SessionState(System.Web.SessionState.SessionStateBehavior.Disabled)]
public class HomeController : Controller
{
public ActionResult Sleep(int? time)
{
System.Threading.Thread.Sleep(time ?? 3000);
return Content("OK");
}
public ActionResult Index()
{
...
3) Öffnen Sie die Datei: Ansichten \ Home \ Index.cshtml und Add/ersetzen Inhalt html mit dem folgenden:
<script>
function ReqClick() {
var startTime = Date();
$.ajax("/Home/Sleep")
.success(function() {
var log = $("#log");
var endTime = Date();
log.text(log.text() + "Start: " + startTime.toString() + " === " + endTime.toString());
});
};
</script>
<button type="button" onclick="ReqClick();">
Request
</button>
<div>
<textarea id="log" style="width:640px; height:480px"></textarea>
</div>
4) Führen Sie es (spielt keine Rolle, ob Sie IIS oder IIS Express oder Vs Dev Server verwenden) - Open Home/Index. Klicken Sie auf F12, um das Dev-Tool zu öffnen, und öffnen Sie die Registerkarte Netzwerk. Auf der Startseite klicken Sie zweimal schnell auf "Anfrage". Sie können die zweite Anforderung sehen fast 6 Sekunden dauert:
im Debug-Modus in der Steuerung können Sie sehen, dass Session null ist:
Cookies sind völlig leer (ASP.NET-Sitzungs-ID ist nicht vorhanden)
Bitte lassen Sie mich wissen, was ich vermisse?
die Einstellung Hinzufügen von unten an web.config hilft auch nicht:
<sessionState mode="Off"/> <pages enableSessionState="ReadOnly"/>
Wenn Sie etwas verwenden Wie [Fiddler] (http://www.telerik.com/fiddler) um die Server-Methode aufzurufen, werden Sie feststellen, dass die Anfragen auf dem Client und nicht auf dem Server stehen. Ihr serverseitiger Code lässt mehrere Anfragen zu, es ist der Browser, der sie in die Warteschlange stellt. Probieren Sie den Composer in Fiddler aus, um Ihre Testanforderungen zu erstellen. –
Ein weiterer Beweis dafür ist, wenn Sie auf Ihrer Ajax-Anfrage 'cache: false' setzen. –
Ich bekomme überhaupt keine Verzögerung. Das Problem ist lokal für Sie. Der Code funktioniert gut für mich. 3 Sekunden pro Anfrage für viele Anfragen. – rism