Feedback

C# - Sessionverwaltung einmal anders

Veröffentlicht von am 15.11.2009
(2 Bewertungen)
Dieses Snippet zeigt, wie man mit Hilfe einer Enumeration Sessionobjekte organisieren und verwalten kann. Zusätzlich sind die Objekte Page.Session und System.Web.SessionState.HttpSessionState mit Hilfe von Extension Methods erweitert worden, so dass ich innerhalb einer Anwendung in allen Bereichen die Enumeration der Sessionkeys verwenden kann.
Eine detailierte Beschreibung findet sich auch in meinem Weblog: http://weblog.drescher-hackel.de/8DD51D74-573E-4D03-AAB9-B83578DD94D3/Session+einmal+anders+verwalten.content.aspx

Die Aufrufe sind dann recht überschaubar und verständlich:

AppSession.Set(SessionKey.Benutzer, "Rene");
AppSession.Get(SessionKey.Benutzer);
AppSession.Remove(SessionKey.Benutzer);
// oder
Session.Add(SessionKey.Benutzer, "Rene");
Session.Set(SessionKey.Benutzer, "Rene");
Session.Get(SessionKey.Benutzer);
Session.Remove(SessionKey.Benutzer);
// oder
SessionKey.Benutzer.Set("Rene");
SessionKey.Benutzer.Get();
SessionKey.Benutzer.Remove();
GFU-Schulungen  [Anzeige]

ASP.NET Core und Angular Komplett für .NET-Entwickler

Sie  lernen in drei (3) Tagen wie man mit  ASP.NET Core und den Technologien  MVC, Entity Framework, WebAPI und  Razor professionelle sowie moderne  Web-Anwendungsarchitekturen aufbaut.  Die Schulung ist der perfekte  Einstieg um insbesondere datengetriebene  und präsentationsorientierte  Applikationen auf Basis der robusten und  skalierbaren ASP.NET Core  Plattform zu erstellen. Nach der Veranstaltung kennen Sie die Konzepte von Angular und können Angular in neue und bestehende ASP.NET-Anwendungen einsetzen.

JavaScript für .NET-Entwickler

Sie sind .NET-Entwickler und nun stehen Sie vor der Aufgabe, JavaScript in Ihre Arbeit einzubinden. Die Schulung vermittelt Ihnen die JavaScript Grundlagen und die Funktionen der Scriptsprache. Sie wissen, wie objektorientierte Programmierung in JavaScript funktioniert und lernen abschließend Best Practicies Fälle kennen.

using System.Web;
namespace www.drescher.hackel.de.SessionApp
{
    /// <summary>
    /// Enum zum Verwalten der SessionKeys
    /// </summary>
    public enum SessionKey
    {
        Benutzer
    }

    /// <summary>
    /// Statische Klasse zum Verwalten der Session
    /// </summary>
    public static class AppSession
    {
        /// <summary>
        /// Gibt die Session mit den übergebenen SessionKey als Key zurück
        /// </summary>
        /// <param name="name">SessionKey</param>
        /// <returns>object</returns>
        public static object Get(SessionKey name)
        {
            return HttpContext.Current.Session[name.ToString()];
        }

        /// <summary>
        /// Setzt die Session mit dem übergebenen SessionKey als Key
        /// </summary>
        /// <param name="name">SessionKey</param>
        /// <param name="value">object</param>
        public static void Set(SessionKey name, object value)
        {
            HttpContext.Current.Session[name.ToString()] = value;
        }

        /// <summary>
        /// Entfernt die Session entsprechend dem übergebenen SessionKey
        /// </summary>
        /// <param name="name">SessionKey</param>
        public static void Remove(SessionKey name)
        {
            HttpContext.Current.Session.Remove(name.ToString());
        }
    }

    /// <summary>
    /// Statische Klasse für Erweiterungsmethoden
    /// </summary>
    public static class ExtendSession
    {
        #region Extends System.Web.SessionState.HttpSessionState
        /// <summary>
        /// Erweitert System.Web.SessionState.HttpSessionState, um den Wert der Session entsprechend des übergebenen SessionKey zu ermitteln
        /// </summary>
        /// <param name="session">System.Web.SessionState.HttpSessionState</param>
        /// <param name="name">SessionKey</param>
        /// <returns>object</returns>
        public static object Get(this System.Web.SessionState.HttpSessionState session, 
            SessionKey name)
        {
            return AppSession.Get(name);
        }

        /// <summary>
        /// Erweitert System.Web.SessionState.HttpSessionState, um den Wert der Session entsprechend des übergebenen SessionKey zu setzen
        /// </summary>
        /// <param name="session">System.Web.SessionState.HttpSessionState</param>
        /// <param name="name">SessionKey</param>
        /// <param name="value">object</param>
        public static void Set(this System.Web.SessionState.HttpSessionState session, 
            SessionKey name, object value)
        {
            AppSession.Set(name, value);
        }

        /// <summary>
        /// Erweitert System.Web.SessionState.HttpSessionState, um den Wert der Session entsprechend des übergebenen SessionKey zu ermitteln
        /// Überschreibt dabei die bestehende Add-Methode
        /// </summary>
        /// <param name="session">System.Web.SessionState.HttpSessionState</param>
        /// <param name="name">SessionKey</param>
        /// <returns>object</returns>
        public static void Add(this System.Web.SessionState.HttpSessionState session, 
            SessionKey name, object value)
        {
            AppSession.Set(name, value);
        }

        /// <summary>
        /// Erweitert System.Web.SessionState.HttpSessionState, zum Entfernen der Session entsprechend dem übergebenen SessionKey
        /// </summary>
        /// <param name="name">SessionKey</param>
        public static void Remove(this System.Web.SessionState.HttpSessionState session,
            SessionKey name)
        {
            AppSession.Remove(name);
        } 
        #endregion

        #region Extends SessionKey
        /// <summary>
        /// Erweiterterung des Enums SessionKey zum Abrufen des Sessionswertes entsprechend des selektierten SessionKeys
        /// </summary>
        /// <param name="name">SessionKey</param>
        /// <returns>object</returns>
        public static object Get(this SessionKey name)
        {
            return AppSession.Get(name);
        }

        /// <summary>
        /// Erweiterterung des Enums SessionKey zum Setzen des Sessionswertes entsprechend des selektierten SessionKeys
        /// </summary>
        /// <param name="name">SessionKey</param>
        /// <param name="value">object</param>
        public static void Set(this  SessionKey name, object value)
        {
            AppSession.Set(name, value);
        }

        /// <summary>
        /// Erweiterterung des Enums SessionKey zum Entfernen der Session entsprechend dem übergebenen SessionKey
        /// </summary>
        /// <param name="name">SessionKey</param>
        public static void Remove(this  SessionKey name)
        {
            AppSession.Remove(name);
        } 
        #endregion
    }
}

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!