ASP .NET Check für die Sitzung
Ich würde gerne prüfen, die Existenz der Sitzung in einem base-Seite der Klasse, bevor ich es verwenden, aber ich habe festgestellt, dass wenn es nicht vorhanden ist, es wird eine Ausnahme nur durch die Prüfung:
if (Session != null)
{
Session.Remove("foo");
}
Wirft diese exception:
Session state kann nur verwendet werden, wenn enableSessionState auf true gesetzt ist, entweder in einem
Konfiguration-Datei oder in der seitendirektive. Bitte stellen Sie auch sicher, dass
System.Web.SessionStateModule oder ein benutzerdefiniertes sitzungszustandsmodul ist in enthalten die
\\ Abschnitt in die Konfiguration der Anwendung.
Die überprüfung erfolgt im Load-Ereignis der Basis-Seite-Klasse, alle meine aspx-Seiten ableiten. Die app hat die Sitzung aktiviert, und es hat den aufgelisteten module in der httpModules-Knoten. Dies ist eine app, die verwendet session-Häufig, in der Regel ohne problem.
Ich bekomme diese Fehlermeldung nur auf bestimmten Seiten und die meisten der Zeit es ist nicht zuverlässig. Ich weiß, ich sollte etwas anderes zu tun, um zu verhindern, dass die Fehler, aber ich bin mir nicht sicher, was?
Bin ich dem Aufruf der Session zu früh im Lebenszyklus vielleicht?
Bin ich die Prüfung nicht korrekt, ob die session vorhanden ist?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie machen Sie Ihre check safer - Seite.Sitzung, wickelt einen null-check rund um den Kontext.Sitzung-Eigenschaft. So sollten Sie in der Lage, zum abrufen von Kontext.Sitzung und überprüfen, ob es null ist. Wenn es dann Sitzungsstatus nicht verfügbar ist.
Aber es sollte in Page_Load(), so dass die Punkte anderswo zu Problemen 🙂
Können Sie eine Methode wie diese, um zu bestimmen, ob die aktuelle Anfrage verwendet session:
Wenn Sie nicht sicher sind, dass Sie selbst läuft in einem web-Kontext würden Sie brauchen, um zu überprüfen, dass HttpContext.Strom war nicht null vorher.
IReadOnlySessionState
erbtIRequiresSessionState
, so müssen Sie nur fürHttpContext.Current.Handler is IRequiresSessionState
.Du keine Probleme die Ausnahme, weil der eine bestimmte Session-variable wird null, sondern einfach durch die Verwendung von Sitzungs-Logik auf eine Seite, die nicht konfiguriert ist zum kommunizieren mit der session state-server (was Sinn macht, in einigen Fällen, wo tatsächlich eine andere Maschine). Wenn es nicht ein Problem für Sie ist, sollten Sie darauf achten, dass Sie immer enableSessionState auf true gesetzt.
Versuchen, die Kontrolle für
HttpContext.Current.Session
oder sogarHttpContext.Current
(ich weiß dass eine Menge in Unit-Tests, wenn die Komponenten bezeichnet, die aus der ASP.NET ich habe diese vars, aber wenn ich Sie rufe aus NUNIT habe ich nicht zur Verfügung)Haben Sie überprüfen die Seiten, auf denen werfen die Fehler für die
enableSessionState
- Eigenschaft der Page-Direktive? Sie können das tun, indem Sie auf der .aspx-Seite, und überprüfen, obenableSessionState
- Eigenschaft ist festgelegt auf true/false. Wenn Ihre set zufalse
machen estrue
.Überprüfen Sie auch im web.config-Datei für den tag
<pages />
, und aktualisieren Sie es auf,Referenz: Hier