Zugriff auf ASP.NET-Sitzungsvariablen in jeder Klasse
ASP.NET-Sitzungen speichern benutzerspezifische Daten über mehrere Anfragen hinweg. Während der direkte Zugriff über Session["variableName"]
innerhalb von Webseiten und Steuerelementen funktioniert, erfordert der Zugriff auf Sitzungsvariablen aus anderen Klassen einen anderen Ansatz.
Lösung: Verwendung von HttpContext.Current.Session
Um auf Sitzungsvariablen aus jeder Klasse zuzugreifen (einschließlich derjenigen im App_Code-Ordner), nutzen Sie das System.Web.HttpContext.Current.Session
-Objekt. Dieses Objekt repräsentiert die aktuelle HTTP-Anfrage und den zugehörigen Sitzungsstatus.
Codebeispiel
Dieses Beispiel zeigt, wie von einer Klasse in App_Code aus auf eine Sitzungsvariable mit dem Namen „loginId“ zugegriffen wird:
<code class="language-csharp">using System.Web; namespace MyApplication { public class MyClass { public int LoginId { get { return (int)HttpContext.Current.Session["loginId"]; } set { HttpContext.Current.Session["loginId"] = value; } } } }</code>
Verbesserter Ansatz: Eine Session-Wrapper-Klasse
Für mehr Typsicherheit und Codeklarheit bietet eine Wrapper-Klasse eine robustere Lösung. Diese Klasse verwaltet eine einzelne Instanz innerhalb der Sitzung und stellt Eigenschaften für den Zugriff auf Sitzungsvariablen bereit, wodurch Typumwandlung und fest codierte Schlüssel entfallen.
Beispiel für eine Wrapper-Klasse
<code class="language-csharp">namespace MyApplication { public class MySessionWrapper { public int LoginId { get; set; } public static MySessionWrapper Current { get { MySessionWrapper session = (MySessionWrapper)HttpContext.Current.Session["__MySession"]; if (session == null) { session = new MySessionWrapper(); HttpContext.Current.Session["__MySession"] = session; } return session; } } } }</code>
Zugriff mit der Wrapper-Klasse
Der Zugriff auf „loginId“ mithilfe des Wrappers ist unkompliziert:
<code class="language-csharp">MySessionWrapper session = MySessionWrapper.Current; int loginId = session.LoginId;</code>
Diese Methode bietet eine sauberere und wartbarere Möglichkeit, Sitzungsvariablen in den Klassen Ihrer Anwendung zu verwalten.
Das obige ist der detaillierte Inhalt vonWie greife ich von einer beliebigen Klasse aus auf ASP.NET-Sitzungsvariablen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!