3 Stimmen

Verlust der Sitzung nach dem Postback

Ich habe Sitzungsvariablen in meiner asp.net-Anwendung für die Übergabe der nächsten Eigenschaft verwendet:

[DefaultValue(true)]
public bool IsModificationMode
{
    get
    {
        return (bool)Session["ModificationMode"];
    }
    set { Session["ModificationMode"] = value; }
}

Im PageLoad setze ich den Wert.

Jetzt, nach dem Postback, verliere ich den Wert mit einer NullReferenceException

0 Stimmen

Können Sie den Code Ihres Postbacks zeigen, in dem Sie den Wert setzen?

0 Stimmen

Den Code anzeigen, wenn Sie die Eigenschaft IsModificationMode setzen.

4voto

Joel Etherton Punkte 36629

Ich habe hochgestimmt @stacknewbee denn ich stimme seiner Idee zu, dass sich der Anwendungspool selbst recycelt. Versuchen Sie als Lösung, den Sitzungsstatus vom Prozess w3wp.exe zu entkoppeln, indem Sie den Eintrag in der web.config von InProc auf StateServer ändern:

<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" timeout="30"/>

Beachten Sie, dass der Serverdienst ASP.Net State Server gestartet sein muss.

4voto

Dom Hicklin Punkte 41
 <modules runAllManagedModulesForAllRequests="true">
            <remove name="Session" />
            <add name="Session" type="System.Web.SessionState.SessionStateModule" />
            <remove name="ScriptModule" />

Wenn Sie nach den obigen Schritten immer noch keine Freude haben, müssen Sie das Sitzungsstatusmodul hinzufügen...

1 Stimmen

Willkommen bei StackOverflow Dom. Können Sie etwas mehr Kontext und Erklärung geben, was Ihre Antwort tut, und wie sie die anderen Antworten verbessert, die vor 2+ Jahren gepostet wurden. Danke.

0 Stimmen

@Deanna, +1, du warst 16 Sekunden schneller als ich bei der Bewertung. Obwohl ich "andere" hinzufügen könnte akzeptiert Antworten".

1voto

stacknewbee Punkte 169

Das Problem kann folgende Gründe haben, 1. Sie löschen entweder die Sitzung irgendwo im Code, oder 2. Ihr Anwendungspool wird recycelt, wodurch Sie die Sitzungsinformationen verlieren. Überprüfen Sie Ihren Code, überprüfen Sie den eventvwr auf Anwendungsrecyclingmeldungen.

1voto

n8wrl Punkte 19091

Handelt es sich um eine Webfarm, also mehr als einen Server? Möglicherweise benötigen Sie eine SQL-Persistenz der Sitzung, damit sie serverübergreifend ist. Wird Ihre Anwendung aus irgendeinem Grund zwischen Postbacks recycelt? Dann geht der In-Memory-Sitzungsstatus verloren. Wie viel Zeit vergeht zwischen Postbacks? Läuft Ihre Sitzung aus (ich glaube, sie ist standardmäßig auf 20 Minuten eingestellt)? Sind Sie sicher, dass Sie den Wert tatsächlich setzen? Lachen Sie nicht - ich habe es getan.

Und sind Sie absolut sicher, dass Sie den Sitzungsstatus verwenden MÜSSEN? Könnte view-state funktionieren?

0voto

Danke für alle Antworten Es war der Eintrag [SessionState], den ich in meiner Web.config übersehen habe:

0 Stimmen

<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" timeout="30"/>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X