Zugriff auf ASP.NET-Sitzungsvariablen außerhalb von Webseiten
In ASP.NET ist der direkte Zugriff auf Sitzungsvariablen innerhalb von Webseiten oder Steuerelementen mithilfe von Session["key"]
unkompliziert. Der Zugriff auf sie über externe Klassen (wie die im Ordner App_Code
) erfordert jedoch einen anderen Ansatz.
Direktzugriffsmethode:
Der direkteste Weg, Sitzungswerte aus einer Klasse abzurufen, ist die Verwendung von System.Web.HttpContext.Current.Session["key"]
. Dies ermöglicht den Zugriff auf den Sitzungsstatus unabhängig vom Standort der Klasse. Um beispielsweise die Sitzungsvariable „loginId“ abzurufen:
<code class="language-csharp">int loginId = (int)System.Web.HttpContext.Current.Session["loginId"];</code>
Verbesserter Ansatz: Eine Session-Wrapper-Klasse
Für verbesserte Typsicherheit, Wartbarkeit und Codeklarheit wird eine Wrapper-Klasse empfohlen. Dies zentralisiert die Sitzungsschlüsselverwaltung, reduziert die Typumwandlung und ermöglicht die Initialisierung von Standardwerten.
Hier ist ein Beispiel:
<code class="language-csharp">public class SessionWrapper { private static SessionWrapper _instance; public static SessionWrapper Instance { get { return _instance ??= new SessionWrapper(); } } public string Property1 { get => (string)System.Web.HttpContext.Current.Session["Property1"] ?? ""; set => System.Web.HttpContext.Current.Session["Property1"] = value; } public int LoginId { get => (int?)System.Web.HttpContext.Current.Session["LoginId"] ?? 0; set => System.Web.HttpContext.Current.Session["LoginId"] = value; } }</code>
Jetzt wird der Zugriff auf Sitzungsvariablen sauberer:
<code class="language-csharp">int loginId = SessionWrapper.Instance.LoginId;</code>
Diese Methode bietet eine bessere Fehlerbehandlung (unter Verwendung des Null-Koaleszenzoperators ??
) und vermeidet potenzielle Ausnahmen aufgrund von Typkonflikten. Die Verwendung von Eigenschaften ermöglicht auch das Festlegen und Abrufen von Sitzungswerten.
Das obige ist der detaillierte Inhalt vonWie kann ich über externe Klassen auf ASP.NET-Sitzungsvariablen zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!