Ich habe ein sehr seltsames Problem mit der Sitzung zu ASP.NET 2.0. Das System, an dem ich arbeite, verwendet Sitzungsvariablen zum Speichern von Parametern für Objekte (wie Fragen und Antworten) zum Generieren eines Berichts. Dies sind Instanzen von Klassen mit demselben Namen. Daher werden sie wie folgt mit Parametern gefüllt:
Dieser Bericht wird über 4 aspx Seiten generiert. Zuerst werden Standort- und Datumsparameter definiert, auf der zweiten Seite werden Fragen und auf der dritten Seite Antworten gespeichert. Die letzte zeigt Links zu generierten Berichten im Excel- und HTML-Format an. Alle variablen Daten werden in der Sitzung gespeichert, und alles geht gut, bis zur letzten Seite, wenn etwas wie eine Session.Abandon () passiert, Session_End-Ereignis ausgelöst wird und alle Variablen verloren gehen. Dies geschieht nur einmal am Tag, für jeden angemeldeten Benutzer bei der ersten Verwendung des Berichts, und dann können Sie den ganzen Tag Dutzende Male versuchen und werden es nicht mehr sehen.
Das Problem tritt IMMER auf der gleichen Seite auf und der Sitzungsmodus ist InProc.
Ich habe die folgenden Validierungen bereits durchgeführt:
Folgende Einschränkungen gelten:
Irgendwelche Gedanken oder Lösungen sind hilfreich. Ich werde in Kontakt bleiben für alle Updates und Tests, die notwendig sind.
Ich möchte allen für die Mühe danken!
Ich und mein Team haben herausgefunden, was in diesem Fall passierte. Es gab eine Methode, die temporäre Dateien und Verzeichnisse innerhalb des Website-Ordners löschte, was eine Wiederverwertung und eine Sitzungspülung verursachte. Der Code berechnete Datum und Uhrzeit und sollte die Verzeichnisse alle 24 Stunden löschen. Wenn sich ein Benutzer zum ersten Mal beim System anmeldet und den Bericht erstellt, löschte er das Verzeichnis und löschte die Sitzung.
Ein paar Vorschläge:
Was ich denke, ist # 3. Sie richten die Werte in einer Sitzung ein und nehmen sie dann vor einem Postback, in dem der Sitzungswert tatsächlich gespeichert ist, wieder aus dieser Sitzung heraus. Da es nur beim ersten Versuch passiert, spiegeln die Symptome diesen Verdacht wider. Wenn ich richtig liege, lösen Sie dies, indem Sie an derselben Stelle konsumieren, an der Sie den Sitzungswert verbraucht haben, anstatt die Sitzung festzulegen, und dann versuchen, in derselben Anfrage davon zu profitieren.
Ich hatte ein Problem mit den Sitzungen. In meinem Fall war das Problem die maximale Worker-Threadanzahl des Anwendungspools. Wenn Sie die Standardsitzung von asp.net verwenden wollen, müssen Sie es machen 1. oder ein anderer Thread kann die Sitzungen nicht bekommen.
Tags und Links web-config asp.net session session-variables visual-studio-2005