Browser friert ein, während ein AJAX-Aufruf in Aktion ist

9

Ich habe eine ASP.NET Web App. Ich stelle fest, dass während ein einfacher Ajax-Aufruf (siehe unten) in Bearbeitung ist, die Webanwendung auf keine Aktion reagiert, die ich in einem anderen Browser versuche.

%Vor%

Das passiert, wenn ich zwei Firefox oder zwei IE öffne. Ich führe die Funktion, die den Ajax-Aufruf auf dem ersten Browser und bis die Antwort des Ajax zurückgegeben wird, kann ich nichts auf dem zweiten Browser auf der gleichen Website tun. Auf dem Server werden keine Breakpoints vom zweiten Browser aus getroffen, bis der erste Ajax abgeschlossen ist. Es hängt für jeden Klick etc ..

Der Hang auf dem zweiten Browser endet sofort, nachdem der Ajax-Aufruf auf dem ersten beendet wurde.

Dieses Verhalten wird nicht beobachtet, wenn ich das gleiche auf IE und Firefox Seite an Seite versuche. Nur passieren mit IE & amp; IE oder FF & amp; FF Seite an Seite

Schätzen Sie, wenn Sie mir helfen können zu sehen, was ich hier vermisse.

    
kaivalya 07.06.2010, 13:55
quelle

2 Antworten

1

Es hört sich an, als ob Apache (oder welcher Webserver auch immer ausgeführt wird) nur eine Anfrage pro Client gleichzeitig verarbeitet. Bei der Verarbeitung Ihrer Ajax-Anfrage stellt Apache alle anderen Anfragen vom selben Client in die Warteschlange.

Wenn Sie zwei verschiedene Browser verwenden, sieht Ihr Server außerdem jeden Browser als einen anderen Client an, dh er verarbeitet eine Anfrage pro Browser. Ich weiß nicht genau, welche Informationen verwendet werden, um einen Client zu identifizieren (meine Vermutung wäre IP-Adresse + Browser-Version, aber ich könnte hier schrecklich falsch liegen)

Jemand anders könnte Ihnen sagen, wie Apache konfiguriert wird, um dieses Problem zu umgehen. leider weiß ich das selbst nicht. Das Problem liegt jedoch nicht bei Javascript / Ajax; Es ist eine Einschränkung, die vom Server auferlegt wird, nicht vom Client.

    
Duroth 07.06.2010 14:09
quelle
0

"someurl" blockiert auf dem Server, bis die erste Anforderung für eine bestimmte Sitzung abgeschlossen ist . Das Problem tritt nicht auf, wenn Sie völlig getrennte Browser haben, da in diesem Szenario zwei separate ASP.NET-Sitzungen vorhanden sind. Standardmäßig führt ASP.NET eine Anforderungswarteschlange aus, wenn derselbe Client mehrere Anforderungen für Ressourcen stellt, die für das Schreiben in die Sitzung konfiguriert sind (Standardeinstellung für Pages). Basierend auf Ihrer Beschreibung ist dies was vor sich geht.

Lösung:

  • Für eine Seite können Sie EnableSessionState="false" oder hinzufügen EnableSessionState="ReadOnly" für die @ Page -Direktive.
  • Bei einem generischen Handler können Sie das Problem lösen, indem Sie entfernen IRequiresSessionState oder ersetzen Sie es durch IReadOnlySessionState .
weir 25.10.2011 19:23
quelle