Verlieren meiner Sitzungsvariablen - Welche Ausnahme kann zum Verlust von Sitzungen führen?

Auf einem Produktionssystem (asp.net webforms .net 4) ist die Zustandsüberwachung aktiviert, und es werden viele Fehler gesendet, die darauf hinweisen, dass eine Sitzungsvariable verloren gegangen ist.

(Ich versuche, etwas außerhalb des Sitzungsstatus an einen Entitätsrahmen-Datenkontext anzuhängen und erhalte den Fehler "Wert darf nicht null sein, Parametername Entität".) Irgendwie enthält die Sitzungsvariable jetzt null und kein Objekt mehr.

Interessanterweise wird dieselbe Anwendung auf zwei separaten Servern bereitgestellt - einem DMZ-Server für externe Benutzer und einem internen Server für interne Benutzer. Beide Anwendungen auf zwei verschiedenen Servern scheinen dasselbe Problem zu haben.

Health Monitoring überwacht auch Ereignisse auf Lebenszeit, und ich kann daraus ersehen, dass keine Änderungen am IIS-Recycling, an der Konfiguration, am Ordner "bin", an Neukompilierungen usw. vorgenommen werden.

Ich habe diese Seite gelesen:http: //weblogs.asp.net/bleroy/archive/2004/08/03/Don_2700_t-redirect-after-setting-a-Session-variable-_2800_or-do-it-right_2900_.asp

Ich kann bestätigen, dass es sich nicht um ein Response.Redirect-Problem handelt, da dies nicht der Fall ist. Dies ist ein Online-Bewerbungsformular. Es versetzt ein Objekt in den Sitzungsstatus auf page_load und es gibt eine Multiview. Wenn "next" gedrückt wird, wird das Objekt beendet Sitzungsstatus, wird an den Datenkontext angehängt, Änderungen werden über das Webformular vorgenommen und der Datenkontext aktualisiert. Es findet also keine Antwort statt.

Ich kann auch bestätigen, dass die Details in "Update 1" und "Update 2" über diesen Link für mich nicht relevant sind. Es wird nur ein Arbeitsprozess im Anwendungspool ausgeführt und der Servername oder die Webadresse enthalten keine Unterstriche.

Ich habe auch die Möglichkeit von Sitzungs-Timeouts verfolgt, aber sie sollten von anderem Code verarbeitet werden, der ausgeführt wird, um Sitzungs-Timeouts zu erkennen (siehe:http: //blogs.msdn.com/b/nikhiln/archive/2007/06/21/detecting-session-timeout-in-asp-net-2-0-web-applications.asp) was ich immer und immer wieder getestet habe - Teil des Problems ist, dass ich diesen Fehler einfach nicht selbst reproduzieren kann.

So:
- Keine Timeouts
- Nicht das Recycling von IIS-Arbeitsprozessen oder andere Ereignisse, die ein Lebenszeitereignis für Health Monitoring auslösen würden
- Keine response.redirect @ verwend
- Keine Webfarm / mehrere Worker-Prozesse erhalten

Ich habe dann diesen Thread gefunden:http: //bytes.com/topic/asp-net/answers/490975-disappearing-session wo ein MVP folgendes sagte:

Wenn die IIS-Anwendung neu gestartet wird, werden auch alle Sitzungen neu gestartet. Also ja, das würde normalerweise während der Neukompilierung passierenund einige wichtige Ausnahmen auf Anwendungsebene.

Aber leider wurde nicht erläutert, welche Art von "großen Ausnahmen auf unbehandelter Anwendungsebene" zu Sitzungsverlusten führen könnten - dies ist ein brandneues System, und es gibt immer noch unbehandelte Ausnahmen, an deren Behebung wir arbeiten - also welche Art von Ausnahmen reden wir hier? Kann eine Anwendungsausnahme in der Sitzung einer Person wirklich alle Sitzungen der Anwendung löschen?

Dieser Thread berührt es auch:http: //bytes.com/topic/asp-net/answers/490975-disappearing-session

Das einzige, was ich ähnlich gesehen habe, ist das Auftreten eines Laufzeitfehlers in der ASP.NET-Anwendung, wodurch die Anwendung neu gestartet wird. Erhalten Sie auch Application_OnStart-Ereignisse?

So ich vermute, wenn ich einen Laufzeitfehler hatte, der den Neustart der Anwendung verursachte, der auch ein Lebenszeitereignis für die Zustandsüberwachung generierte, oder? Und ich bekomme einfach keine von denen ...

Es wäre viel einfacher, wenn ich das tatsächlich wiederholen könnte, aber ich kann es einfach nicht!

Wie auch immer, entschuldigen Sie die lange schelmische Frage, hoffen Sie nur, dass jemand einige Ideen hat.

Grüß

Antworten auf die Frage(2)

Ihre Antwort auf die Frage