2011-01-12 9 views
3

Ich mache eine Reihe von Anrufen an meine Webanwendung (IIS7 im klassischen Modus). Die ersten beiden Aufrufe instanzieren Objekte und platzieren sie im Session-Objekt.Warum verschwinden Objekte aus meiner Sitzung in IIS7?

Wenn ich einen dritten Aufruf mache, fehlt der Sitzung ein Objekt. Ich erwarte, dass es 2 meiner Schlüssel in Sitzung gibt, aber es gibt nur 1.

Es ist fast so, als ob mehrere Sitzungen erstellt werden. Eine Sache zu beachten ist, dass dies viel passiert, es ist nicht 100% wiederholbar, d. H. Manchmal funktioniert alles gut.

Die Objekte sind groß, aber nicht riesig (Ungefähr 100 kleine Strings), also scheint es unwahrscheinlich, dass ich eine Sessiongröße ausreize. Ich lege keine anderen Gegenstände hinein.

+0

Wie viel Zeit vergeht zwischen Ihren Anrufen? Ist Ihre Sitzung abgelaufen? Verwenden Sie den richtigen Schlüssel, um auf die zuvor gespeicherten Werte zuzugreifen (die Schlüssel unterscheiden zwischen Groß- und Kleinschreibung)? Haben Sie einen Debugger verwendet, um den Inhalt des Session-Objekts zu untersuchen? – slugster

+0

Was Slugster sagte. Wo beharrst du auch auf der Session? Im Speicher (InProc), Datenbank oder anderswo ...? – 5arx

+0

Die Anrufe sind nacheinander in schneller Folge und in Serie. Die Sitzungsschlüssel sind numerisch und ich habe die Sitzung in einem Debugger überprüft, der nur einen Schlüssel anzeigt. – izb

Antwort

1

Ok, ich habe es gelöst (Mit Hilfe der global.asax Tipp von Citronas).

Wie immer stellt sich heraus, dass ich Dinge in meiner Frage und Kommentare behauptet habe, die nicht so wahr waren, wie ich angenommen hatte.

Die ersten beiden Aufrufe werden nicht in Serie gemacht, aber die zweite wurde gemacht, bevor die erste Zeit hatte zurückzukehren. Dies führte zu zwei Session_Start-Aufrufen (interessanterweise mit derselben Sitzungs-ID). Die ersten Sitzungsdaten wurden daher überschrieben.

Meine App zu ändern, um auf jeden Anruf warten zu warten, um das Problem zu beheben.

Danke an alle, die geantwortet oder kommentiert haben.

2

Hört sich an, als ob Sie eine unbehandelte Ausnahme erleben, von der Sie nichts wissen. Die Sitzung wird bei solchen Ausnahmen zerstört.

Setzen Sie Haltepunkte in der global.asax zu den Application_OnError, Session_End und Session_Start Methoden für sie zu überprüfen

+0

Sicherlich wird die Sitzung nicht zerstört für * jede * unbehandelte Ausnahme tut es? Ich kann mir einiges vorstellen, aber ich bin ziemlich sicher, dass ich nach einer unbehandelten Ausnahme intakte Sitzungen hatte ... – Chris

+0

Ich denke, meine Antwort gilt nur für InProc-Sitzungen. Leider kann ich nicht aus dem MSDN dafür zitieren – citronas

0

Welches verschwunden, die erste oder die letzte hinzugefügt? Ihre Anwendung scheint nach dem ersten Anruf wiederverwendet zu werden, daher wird die zuerst hinzugefügte Anwendung gelöscht.

Verwandte Themen