2009-03-10 14 views
3

Ich habe ein iframe am Leben (Iframe, das eine Seite, defibrillator.aspx, auf meiner Website alle paar Minuten, um die Sitzung am Leben zu halten) auf meiner Masterpage für eine asp.net-App. Dies funktioniert die meiste Zeit, aber gelegentlich verlieren meine Sitzungsvariablen während des Ladens der Seite auf meiner Defibrillatorseite den Wert null. Zuerst dachte ich, dass die Sitzung vom Server aus irgendeinem Grund abgelaufen ist, also habe ich etwas Logging in das Session_End Event im global.asax eingetragen, aber es wurde nie getroffen.ASP.NET WebForms - Sitzungsvariablen Null

Irgendwelche Ideen, was dazu führen könnte, dass die Sitzung verloren geht.

+0

Was ist Ihr Sitzungszustand-Modus? InProc? –

Antwort

2

Viele Dinge können dazu führen, dass die Sitzung verloren geht. Ein AppPool recycle, iisreset, der Client könnte seinen Sitzungscookie verlieren usw. Ohne mehr zu wissen, ist es schwierig zu sagen, wo das Problem liegt.

Wenn die Sitzung so wichtig ist, dass Sie die Anwendung abfragen, um den Worker-Prozess vom Schlafen abzuhalten, sollten Sie vielleicht in persisting your session state to SQL Server schauen.

0

Wenn der gewählte Persistenzmechanismus InProc ist, kann er von vielen Dingen ausgelöst werden. Total für eine Produktionsumgebung nicht empfohlen.

1

Ich hatte die gleiche Art von Problem, Speichern eines Warenkorb-Status in Sitzung, aber stattdessen Null zurückgegeben. Ich denke, dass ich die Antwort auf Bertrand Le Roy Blog gefunden, die für mich zu arbeiten scheint:

Session Verlustprobleme auch von einem falsch konfigurierten Anwendungspool zur Folge haben können. Zum Beispiel, wenn der Anwendungspool Ihre Website als eine Web-Farm ist so konfiguriert, läuft oder ein Web-Garten (von die maximale Anzahl von Arbeitseinstellung verarbeitet auf mehr als eine), und wenn Sie nicht mit der Session-Service oder SQL Sitzungen, eingehende Anfragen werden unvorhersehbar zu einem der Worker Prozesse gehen, und wenn es nicht die eine Sitzung erstellt wurde, ist es verloren. Die Lösungen für dieses Problem ist entweder nicht zu einem Web-Garten zu verwenden, wenn Sie nicht benötigen die Leistungssteigerung, oder verwenden Sie eine der Out-of-Process-Sitzung Anbieter.

Blog