ASP.NET Requests und .NET 4.5 - Seltsames Verhalten

9

Nach der Aktualisierung des Produkts auf .NET 4.5 erhalten wir auf unserer Website seltsames Verhalten. Ich werde versuchen, so spezifisch wie möglich zu sein, aber das Problem ist vage, also bitte ertragen Sie mit mir. Auch für dieses Szenario arbeiten Sie unter der Annahme, dass keine Best Practices eingehalten wurden.

Der Benutzer kommt auf eine Seite, die asynchron mehrere jquery-ajax-Aufrufe an einen Webservice sendet. Aufgrund des schlechten Designs / Codierens auf dieser Seite kann das Laden dauern dauern, aber es stellt ein Untermenü bereit, auf das der Benutzer zugreifen muss. Sobald die Seite geladen wird, klicken sie auf eine der Menüoptionen, um zu einer anderen Seite zu wechseln. Nichts Besonderes bisher.

Wenn wir perfmon auf einer Box verwenden, auf der nur .NET 4.0 installiert ist, sehen wir, dass die ASP.NET-Anfragen wie erwartet nach oben und unten gehen:

Wenn wir es auf einer Box mit .NET 4.5 installieren, bekommen wir folgendes:

Nachdem der oben beschriebene Workflow ausgeführt wurde, wird die Anfrage beendet. Nicht in der Warteschlange; sie sitzen einfach da.

Nach weiteren Recherchen stellen wir fest, dass das Klicken zwischen den zwei verschiedenen Seiten nicht nur eine einfache href ist, sondern tatsächlich Response.Redirect (url);

verwendet

Dies geschieht auch nur bei Verwendung von IE. Dies ist kein Problem bei der Verwendung von Firefox und Chrome.

Folgendes haben wir bisher versucht:

  1. Wir haben M $ kontaktiert und ihnen DebugDiag-Dumps geschickt. Warte noch.
  2. Ich bin zu IIS gegangen, habe die Site so eingestellt, dass fehlgeschlagene Anfragen verfolgt werden, und habe einen Filter für fehlgeschlagene Anfragen eingerichtet, um mir alles zu geben. Sobald die Website gesperrt ist, lösche ich die Protokolle und untersuche dann, was nach der Sperrung der Website eingeht. Jedes Mal, wenn es zwischen den Ereignissen AspNetSessionDataBegin und AspNetSessionDataEnd hängen bleibt.
  3. Wir haben einen HttpHandler, der liest / schreibt in die Sitzung, und das Deaktivieren scheint das Problem größtenteils zu lösen, aber keine Erklärung dafür, warum.
  4. jquery's onunload-Handler, der alle verbleibenden xmlhttp-Anfragen bereinigen und abbrechen soll, scheint nicht ständig ausgeführt zu werden.
  5. Installierte diesen Patch , der immer noch nicht half.
  6. Wir ändern derzeit die Response.Redirect (url) -Methoden in dieser Navigationslogik auf Response.Redirect (url, false); (Siehe oben).

Auch hier ist der HttpHandler Code:

%Vor%

Irgendwelche Vorschläge, wo wir als nächstes aussehen sollten?

    
Schandlich 07.03.2013, 18:27
quelle

1 Antwort

4

Der folgende Patch wurde jetzt von Microsoft veröffentlicht und scheint das Problem zu beheben, ohne dass web.config oder IIS-Konfigurationsänderungen erforderlich sind. Ссылка Ссылка

Vorherige Antwort

Nach weiteren Untersuchungen und Einsichten / Lösungen des .NET-Kompatibilitätsteams bearbeite ich diese Antwort.

Die Lösung gefunden unter ManagedPipelineHandler für einen AJAX-POST stürzt ab, wenn ein IE9-Benutzer von einer Seite weg navigiert, während dieser Anruf ausgeführt wurde scheint für uns zuverlässiger zu funktionieren. Das ist Verhalten, das wir in IE8-10 erlebt haben, und nicht nur 9.

Ich werde die alte Antwort hier beibehalten, da sie hoffentlich Leute in eine andere Richtung weisen kann, wenn die erste Antwort nicht relevant ist.

Ehemalige frühere Antwort

Die Quelle endete mit der Sitzungssperre. Die Ereignisse AspNetSessionDataBegin und AspNetSessionDataEnd sollten ein totales Werbegeschenk sein. Für jeden, der auf dasselbe Problem stolpert, schauen Sie, wann und wie Sie in die Sitzung schreiben. Diese Links haben auch geholfen.

ASP.Net-Sitzung vollständig ersetzen

Ich habe gerade herausgefunden, warum alle ASP.Net-Websites langsam sind, und ich versuche herauszufinden, was ich dagegen tun kann

    
Schandlich 11.03.2013, 16:30
quelle