Frage

Es gibt Unmengen von Informationen da draußen über Dinge verursacht InProc Sitzung Sitzungs Objekte zu löschen, aber das ist nicht das, was hier passiert. Wir verpassen einzelne Variablen innerhalb stabiler InProc Sitzungsobjekte und sind nicht sicher, ob sie nicht geschrieben werden oder nach einem erfolgreichen Schreib verloren. Ich habe mit WinDBG bestätigt, dass die Sitzungen werden live angezeigt und enthalten einige, aber nicht alle, der ihnen geschriebenen Daten.

Guid g = System.Guid.NewGuid();
this.Context.Session.Add(g.ToString(), result.ImageData);           
output.Write("<img src=\"display.aspx?id=" + g.ToString() + "\">");

Dieser Code ist ziemlich einfach, und es funktioniert einwandfrei in Test. In Produktion, unter hohen Last, aber es scheitert ~ 1% der Zeit. Wenn Herr Smith die Website besucht und versucht, 4 Stück von Bilddaten angezeigt werden, 2 von ihnen könnte in seiner Sitzung und zwei von ihnen verloren gespeichert werden.

Das InProc Sitzungsobjekt für Mr. Smith existiert. Die Verkehrsprotokolle zeigen, dass er 4 Mal angeklickt, jeweils mit einer anderen ID param. Aber es gibt nur 2 guids in seiner InProc-Session-Objekt, statt 4. Die 2 Sitzungsobjekte wir haben capture tun entsprechen 2 der ID im Verkehrsprotokoll angezeigt ist (seine 1. und 3. Klicks.) Die Verkehrsprotokolle für seine zweite und 4. Klicks, zeigen jedoch eine gUID-ID, die nicht in seinem InProc-Session-Objekt ist.

Die Linien 1 und 3 des obigen Codes offensichtlich für die 2. und 4. Klicks gearbeitet, oder er würde nicht die ID in der URI hatte für ihn klicken auf. Linie 2, scheint jedoch still in irgendeiner Weise versagt zu haben. Wenn eine Ausnahme geworfen worden ist, würde ich erwarten, dass wir würden nicht immer auf Linie angekommen 3. ich keine Möglichkeit für den Benutzer sehen kann, den GUID-ID zu erhalten, aber die Sitzung zum Scheitern verurteilt, es zu haben. Die andere Möglichkeit ist die Linie 2 erfolgreich gearbeitet, aber die Variable später verschwunden, wie ich kann nicht einmal vorstellen kann.

denken kann jemand etwas anderes? Oder vielleicht ein Vorschlag für eine Art und Weise ein Problem wie diese repro?

Details: ASP.NET v3.5 IIS 6 Kein Webgartentechnik Wir laufen eine Web-Farm, aber die Benutzer immer wieder auf den gleichen Server zurück. Ich bin die Erforschung nun, ob es irgendeine Art und Weise Benutzer auf den anderen Server könnten ein Abrutschen.

War es hilfreich?

Lösung

Nun, eine einfache Möglichkeit, um herauszufinden, ob das Problem wegen des Load-Balancer und klebrig Sitzung ist vollständig mit, ihn zu stoppen und wenn das Problem reproduziert sehen.

Wenn das nicht möglich ist, können Sie die Sitzung außerhalb des Prozesses speichern [State-Server] und überprüfen Sie die Sitzungen wieder. Ich arbeitete bei Microsoft Global Technical Support- und haben viele Fälle, in denen die Sticky-Sitzung nur funktioniert nicht!

gesehen

http://aspalliance.com/1182

Andere Tipps

Wenn möglich in Ihrer Situation, können Sie Bypass die Notwendigkeit für klebrige Sitzungen, indem Sie auf jedem Server in der Farm die gleiche Maschine Schlüssel mit.

http://www.asp101.com/tips/index.asp? id = 165

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top