IHttpSessionState IHttpSessionState IHttpSessionState IHttpSessionState Interface

Definition

Definiert den Vertrag für die Implementierung eines benutzerdefinierten Sitzungszustandscontainers.Defines the contract to implement a custom session-state container.

public interface class IHttpSessionState
public interface IHttpSessionState
type IHttpSessionState = interface
Public Interface IHttpSessionState
Abgeleitet

Beispiele

Im folgenden Codebeispiel wird die IHttpSessionState -Schnittstelle implementiert, um eine neue Sitzungs Zustands- MySessionStateContainer Klasse mit dem Namen zu erstellen.The following code example implements the IHttpSessionState interface to create a new session-state container class named MySessionState.

using System;
using System.Web;
using System.Web.SessionState;
using System.Collections;
using System.Collections.Specialized;
using System.Text;
using System.Threading;
using System.Globalization;

namespace Samples.AspNet.SessionState
{
  public sealed class MySessionState : IHttpSessionState
  {
    const int MAX_TIMEOUT = 24 * 60;  // Timeout cannot exceed 24 hours.

    string                      pId;
    ISessionStateItemCollection pSessionItems;
    HttpStaticObjectsCollection pStaticObjects;
    int                         pTimeout;
    bool                        pNewSession;
    HttpCookieMode              pCookieMode;
    SessionStateMode            pMode;
    bool                        pAbandon;
    bool                        pIsReadonly;

    public MySessionState(string                      id, 
                          ISessionStateItemCollection sessionItems,
                          HttpStaticObjectsCollection staticObjects,
                          int                         timeout,
                          bool                        newSession,
                          HttpCookieMode              cookieMode,
                          SessionStateMode            mode,
                          bool                        isReadonly)
    {
      pId            = id;   
      pSessionItems  = sessionItems;
      pStaticObjects = staticObjects;
      pTimeout       = timeout;    
      pNewSession    = newSession; 
      pCookieMode    = cookieMode;
      pMode          = mode;
      pIsReadonly    = isReadonly;
    }


    public int Timeout
    {
      get { return pTimeout; }
      set
      {
        if (value <= 0)
          throw new ArgumentException("Timeout value must be greater than zero.");

        if (value > MAX_TIMEOUT)
          throw new ArgumentException("Timout cannot be greater than " + MAX_TIMEOUT.ToString());

        pTimeout = value;
      }
    }


    public string SessionID
    {
      get { return pId; }
    }


    public bool IsNewSession
    {
      get { return pNewSession; }
    }


    public SessionStateMode Mode
    {
      get { return pMode; }
    }


    public bool IsCookieless
    {
      get { return CookieMode == HttpCookieMode.UseUri; }
    }


    public HttpCookieMode CookieMode
    {
      get { return pCookieMode; }
    }


    //
    // Abandon marks the session as abandoned. The IsAbandoned property is used by the
    // session state module to perform the abandon work during the ReleaseRequestState event.
    //
    public void Abandon()
    {
      pAbandon = true;
    }

    public bool IsAbandoned
    {
      get { return pAbandon; }
    }

    //
    // Session.LCID exists only to support legacy ASP compatibility. ASP.NET developers should use
    // Page.LCID instead.
    //
    public int LCID
    {
      get { return Thread.CurrentThread.CurrentCulture.LCID; }
      set { Thread.CurrentThread.CurrentCulture = CultureInfo.ReadOnly(new CultureInfo(value)); }
    }


    //
    // Session.CodePage exists only to support legacy ASP compatibility. ASP.NET developers should use
    // Response.ContentEncoding instead.
    //
    public int CodePage
    {
      get
      { 
        if (HttpContext.Current != null)
          return HttpContext.Current.Response.ContentEncoding.CodePage;
        else
          return Encoding.Default.CodePage;
      }
      set
      { 
        if (HttpContext.Current != null)
          HttpContext.Current.Response.ContentEncoding = Encoding.GetEncoding(value);
      }
    }


    public HttpStaticObjectsCollection StaticObjects
    {
      get { return pStaticObjects; }
    }


    public object this[string name]
    {
      get { return pSessionItems[name]; }
      set { pSessionItems[name] = value; }
    }


    public object this[int index]
    {
      get { return pSessionItems[index]; }
      set { pSessionItems[index] = value; }
    }
        

    public void Add(string name, object value)
    {
      pSessionItems[name] = value;        
    }


    public void Remove(string name)
    {
      pSessionItems.Remove(name);
    }


    public void RemoveAt(int index)
    {
      pSessionItems.RemoveAt(index);
    }


    public void Clear()
    {
      pSessionItems.Clear();
    }

    public void RemoveAll()
    {
        Clear();
    }



    public int Count
    {
      get { return pSessionItems.Count; }
    }



    public NameObjectCollectionBase.KeysCollection Keys
    {
      get { return pSessionItems.Keys; }
    }


    public IEnumerator GetEnumerator()
    {
      return pSessionItems.GetEnumerator();
    }


    public void CopyTo(Array items, int index)
    {
      foreach (object o in items)
        items.SetValue(o, index++);
    }


    public object SyncRoot
    {
        get { return this; }
    }


    public bool IsReadOnly
    {
      get { return pIsReadonly; }
    }


    public bool IsSynchronized
    {
      get { return false; }
    }
  }
}
Imports System.Web
Imports System.Web.SessionState
Imports System.Collections
Imports System.Collections.Specialized
Imports System.Text
Imports System.Threading
Imports System.Globalization

Namespace Samples.AspNet.SessionState

  Public NotInheritable Class MySessionState
    Implements IHttpSessionState
  
    Const MAX_TIMEOUT As Integer = 24 * 60  ' Timeout cannot exceed 24 hours.

    Dim pId            As String
    Dim pSessionItems  As ISessionStateItemCollection
    Dim pStaticObjects As HttpStaticObjectsCollection
    Dim pTimeout       As Integer
    Dim pNewSession    As Boolean
    Dim pCookieMode    As HttpCookieMode
    Dim pMode          As SessionStateMode
    Dim pAbandon       As Boolean
    Dim pIsReadonly    As Boolean

    Public Sub New(id            As String, _
                   sessionItems  As ISessionStateItemCollection, _
                   staticObjects As HttpStaticObjectsCollection, _
                   timeout       As Integer, _
                   newSession    As Boolean, _
                   cookieMode    As HttpCookieMode, _
                   mode          As SessionStateMode, _  
                   isReadonly As Boolean)
    
      pId            = id   
      pSessionItems  = sessionItems
      pStaticObjects = staticObjects
      pTimeout       = timeout    
      pNewSession    = newSession 
      pCookieMode    = cookieMode
      pMode          = mode
      pIsReadonly    = isReadonly
    End Sub


    Public Property Timeout As Integer Implements IHttpSessionState.Timeout
      Get
        Return pTimeout
      End Get
      Set
        If value <= 0 Then _
          Throw New ArgumentException("Timeout value must be greater than zero.")

        If value > MAX_TIMEOUT Then _
          Throw New ArgumentException("Timout cannot be greater than " & MAX_TIMEOUT.ToString())

        pTimeout = value
      End Set
    End Property


    Public ReadOnly Property SessionID As String Implements IHttpSessionState.SessionID
      Get
        Return pId
      End Get
    End Property


    Public ReadOnly Property IsNewSession As Boolean Implements IHttpSessionState.IsNewSession
      Get
        Return pNewSession
      End Get
    End Property


    Public ReadOnly Property Mode As SessionStateMode Implements IHttpSessionState.Mode    
      Get
        Return pMode
      End Get
    End Property


    Public ReadOnly Property IsCookieless As Boolean Implements IHttpSessionState.IsCookieLess    
      Get
        Return CookieMode = HttpCookieMode.UseUri
      End Get
    End Property


    Public ReadOnly Property CookieMode As HttpCookieMode Implements IHttpSessionState.CookieMode    
      Get
        Return pCookieMode
      End Get
    End Property


    '
    ' Abandon marks the session as abandoned. The IsAbandoned property is used by the
    ' session state module to perform the abandon work during the ReleaseRequestState event.
    '
    Public Sub Abandon() Implements IHttpSessionState.Abandon
      pAbandon = True
    End Sub

    Public ReadOnly Property IsAbandoned As Boolean  
      Get
        Return pAbandon
      End Get
    End Property

    '
        ' Session.LCID exists only to support legacy ASP compatibility. ASP.NET developers should use
    ' Page.LCID instead.
    '
    Public Property LCID As Integer Implements IHttpSessionState.LCID
      Get
        Return Thread.CurrentThread.CurrentCulture.LCID
      End Get
      Set
        Thread.CurrentThread.CurrentCulture = CultureInfo.ReadOnly(new CultureInfo(value))
      End Set
    End Property


    '
        ' Session.CodePage exists only to support legacy ASP compatibility. ASP.NET developers should use
    ' Response.ContentEncoding instead.
    '
    Public Property CodePage As Integer Implements IHttpSessionState.CodePage    
      Get
        If Not HttpContext.Current Is Nothing Then
          Return HttpContext.Current.Response.ContentEncoding.CodePage
        Else
          Return Encoding.Default.CodePage
        End If
      End Get
      Set       
        If Not HttpContext.Current Is Nothing Then _
          HttpContext.Current.Response.ContentEncoding = Encoding.GetEncoding(value)
      End Set
    End Property


    Public ReadOnly Property StaticObjects As HttpStaticObjectsCollection _
      Implements IHttpSessionState.StaticObjects
    
      Get
        Return pStaticObjects
      End Get
    End Property


    Public Property Item(name As String) As Object Implements IHttpSessionState.Item
      Get
        Return pSessionItems(name)
      End Get
      Set
        pSessionItems(name) = value
      End Set
    End Property


    Public Property Item(index As Integer) As Object Implements IHttpSessionState.Item    
      Get
        Return pSessionItems(index)
      End Get
      Set
        pSessionItems(index) = value
      End Set
    End Property
        

    Public Sub Add(name As String, value As Object) Implements IHttpSessionState.Add    
      pSessionItems(name) = value        
    End Sub


    Public Sub Remove(name As String) Implements IHttpSessionState.Remove    
      pSessionItems.Remove(name)
    End Sub


    Public Sub RemoveAt(index As Integer) Implements IHttpSessionState.RemoveAt    
      pSessionItems.RemoveAt(index)
    End Sub


    Public Sub Clear() Implements IHttpSessionState.Clear 
      pSessionItems.Clear()
    End Sub

    Public Sub RemoveAll() Implements IHttpSessionState.RemoveAll
        Clear()
    End Sub



    Public ReadOnly Property Count As Integer Implements IHttpSessionState.Count    
      Get
        Return pSessionItems.Count
      End Get
    End Property



    Public ReadOnly Property Keys As NameObjectCollectionBase.KeysCollection _
      Implements IHttpSessionState.Keys
    
      Get
        Return pSessionItems.Keys
      End Get
    End Property


    Public Function GetEnumerator() As IEnumerator Implements IHttpSessionState.GetEnumerator
        Return pSessionItems.GetEnumerator()
    End Function


    Public Sub CopyTo(items As Array, index As Integer) Implements IHttpSessionState.CopyTo    
      For Each o As Object In items
        items.SetValue(o, index)
        index += 1
      Next
    End Sub


    Public ReadOnly Property SyncRoot As Object Implements IHttpSessionState.SyncRoot    
        Get
          Return Me
       End Get
    End Property


    Public ReadOnly Property IsReadOnly As Boolean Implements IHttpSessionState.IsReadOnly    
      Get
        Return pIsReadonly
      End Get
    End Property


    Public ReadOnly Property IsSynchronized As Boolean Implements IHttpSessionState.IsSynchronized    
      Get
        Return False
      End Get
    End Property
  End Class
End Namespace

Hinweise

Ein Sitzungs Zustands Container ermöglicht den Zugriff auf die Sitzungs Zustands Werte und zugehörige Informationen für die aktuelle Sitzung.A session-state container provides access to the session-state values and related information for the current session. Sitzungsinformationen, die in einem Sitzungs Zustands Container enthalten sind, werden mithilfe der HttpSessionState Session -Eigenschaft für den Anwendungscode über die-Klasse verfügbar gemacht.Session information included in a session-state container is exposed to application code through the HttpSessionState class using the Session property. Die HttpSessionState -Klasse ist eine Wrapper Klasse für einen Sitzungs Zustands Container.The HttpSessionState class is a wrapper class for a session-state container.

Die ASP.NET-Implementierung eines Sitzungs Zustands Containers ist die HttpSessionStateContainer -Klasse.The ASP.NET implementation of a session-state container is the HttpSessionStateContainer class. Zu Beginn einer Anforderung AcquireRequestState wird während des-Ereignisses SessionStateModule ein HttpSessionStateContainer -Objekt erstellt und aufgefüllt und dem aktuellen HttpContext-Objekt zugewiesen.At the beginning of a request, during the AcquireRequestState event, the SessionStateModule creates and populates an HttpSessionStateContainer object and assigns it to the current HttpContext. Am Ende einer Anforderung ReleaseRequestState ruft während des-Ereignisses SessionStateModule HttpSessionStateContainer das Objekt aus der aktuellen HttpContext ab und führt alle erforderlichen Sitzungs Aufgaben aus, z. b. das Schreiben der Sitzungs Werte in den Sitzungs Speicher oder das Abbrechen der Sitzung.At the end of a request, during the ReleaseRequestState event, the SessionStateModule retrieves the HttpSessionStateContainer object from the current HttpContext and performs any required session work, such as writing the session values to the session store, or abandoning the session. Wird die Anforderung plötzlich beendet (z. b. über eine Umleitung) SessionStateModule , führt den gleichen Bereinigung durch Aufrufen EndRequest der-Methode aus.If the request is abruptly terminated, such as through a redirect, the SessionStateModule performs the same cleanup by calling the EndRequest method.

Um einen benutzerdefinierten Sitzungs Zustands Container zu erstellen, erstellen Sie eine Klasse, IHttpSessionState die die-Schnittstelle implementiert.To create a custom session-state container, create a class that implements the IHttpSessionState interface. Wenn Sie einen eigenen benutzerdefinierten Sitzungs Zustands Container erstellen, müssen Sie auch SessionStateModule durch ihr eigenes benutzerdefiniertes Modul ersetzen.If you are creating your own custom session-state container, you must also replace the SessionStateModule with your own custom module. Das benutzerdefinierte Modul erstellt eine Instanz des benutzerdefinierten Sitzungs Zustands Containers und fügt es der aktuellen HttpContext mithilfe der AddHttpSessionStateToContext -Methode hinzu.Your custom module will create an instance of your custom session-state container and add it to the current HttpContext using the AddHttpSessionStateToContext method. Ein Beispiel für ein benutzerdefiniertes Sitzungs Zustands Modul ist in der SessionStateUtility Übersicht über die-Klasse enthalten.An example of a custom session-state module is included in the SessionStateUtility class overview.

Eigenschaften

CodePage CodePage CodePage CodePage

Ruft den Codepagebezeichner der aktuellen Sitzung ab oder legt diesen fest.Gets or sets the code-page identifier for the current session.

CookieMode CookieMode CookieMode CookieMode

Ruft einen Wert ab, der angibt, ob die Anwendung für Sitzungen ohne Cookies konfiguriert ist.Gets a value that indicates whether the application is configured for cookieless sessions.

Count Count Count Count

Ruft die Anzahl der Elemente in der Auflistung der Sitzungszustandselemente ab.Gets the number of items in the session-state item collection.

IsCookieless IsCookieless IsCookieless IsCookieless

Ruft einen Wert ab, der angibt, ob die Sitzungs-ID in der URL eingebettet oder in einem HTTP-Cookie gespeichert ist.Gets a value indicating whether the session ID is embedded in the URL or stored in an HTTP cookie.

IsNewSession IsNewSession IsNewSession IsNewSession

Ruft einen Wert ab, der angibt, ob die Sitzung mit der aktuellen Anforderung erstellt wurde.Gets a value indicating whether the session was created with the current request.

IsReadOnly IsReadOnly IsReadOnly IsReadOnly

Ruft einen Wert ab, der angibt, ob die Sitzung schreibgeschützt ist.Gets a value indicating whether the session is read-only.

IsSynchronized IsSynchronized IsSynchronized IsSynchronized

Ruft einen Wert ab, der angibt, ob der Zugriff auf die Auflistung der Sitzungszustandswerte synchronisiert (threadsicher) ist.Gets a value indicating whether access to the collection of session-state values is synchronized (thread safe).

Item[Int32] Item[Int32] Item[Int32] Item[Int32]

Ruft einen Sitzungszustandselementwert über den numerischen Index ab oder legt diesen fest.Gets or sets a session-state item value by numerical index.

Item[String] Item[String] Item[String] Item[String]

Ruft einen Sitzungszustandselementwert über den Namen ab oder legt diesen fest.Gets or sets a session-state item value by name.

Keys Keys Keys Keys

Ruft eine Auflistung der Schlüssel aller Werte ab, die in der Auflistung der Sitzungszustandselemente gespeichert sind.Gets a collection of the keys for all values stored in the session-state item collection.

LCID LCID LCID LCID

Ruft den Gebietsschemabezeichner (LCID, Locale Identifier) der aktuellen Sitzung ab oder legt diesen fest.Gets or sets the locale identifier (LCID) of the current session.

Mode Mode Mode Mode

Ruft den aktuellen Sitzungszustandsmodus ab.Gets the current session-state mode.

SessionID SessionID SessionID SessionID

Ruft die eindeutige Sitzungs-ID für die Sitzung ab.Gets the unique session identifier for the session.

StaticObjects StaticObjects StaticObjects StaticObjects

Ruft eine Auflistung von Objekten ab, die durch <object Runat="Server" Scope="Session"/>-Tags innerhalb der ASP.NET-Anwendungsdatei Global.asax deklariert werden.Gets a collection of objects declared by <object Runat="Server" Scope="Session"/> tags within the ASP.NET application file Global.asax.

SyncRoot SyncRoot SyncRoot SyncRoot

Ruft ein Objekt ab, mit dem der Zugriff auf die Auflistung der Sitzungszustandswerte synchronisiert werden kann.Gets an object that can be used to synchronize access to the collection of session-state values.

Timeout Timeout Timeout Timeout

Ruft das Timeout in Minuten ab, das zwischen Anforderungen zulässig ist, bevor der Sitzungszustandsanbieter die Sitzung beendet, oder legt dieses fest.Gets or sets the time-out period (in minutes) allowed between requests before the session-state provider terminates the session.

Methoden

Abandon() Abandon() Abandon() Abandon()

Beendet die aktuelle Sitzung.Ends the current session.

Add(String, Object) Add(String, Object) Add(String, Object) Add(String, Object)

Fügt der Sitzungszustandsauflistung ein neues Element hinzu.Adds a new item to the session-state collection.

Clear() Clear() Clear() Clear()

Löscht alle Werte aus der Auflistung der Sitzungszustandselemente.Clears all values from the session-state item collection.

CopyTo(Array, Int32) CopyTo(Array, Int32) CopyTo(Array, Int32) CopyTo(Array, Int32)

Kopiert die Auflistung der Sitzungszustandselementwerte in ein eindimensionales Array ab dem angegebenen Index im Array.Copies the collection of session-state item values to a one-dimensional array, starting at the specified index in the array.

GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

Gibt einen Enumerator zurück, mit dem alle Werte der Sitzungszustandselemente in der aktuellen Sitzung gelesen werden können.Returns an enumerator that can be used to read all the session-state item values in the current session.

Remove(String) Remove(String) Remove(String) Remove(String)

Löscht ein Element aus der Auflistung der Sitzungszustandselemente.Deletes an item from the session-state item collection.

RemoveAll() RemoveAll() RemoveAll() RemoveAll()

Löscht alle Werte aus der Auflistung der Sitzungszustandselemente.Clears all values from the session-state item collection.

RemoveAt(Int32) RemoveAt(Int32) RemoveAt(Int32) RemoveAt(Int32)

Löscht ein Element an einem angegebenen Index aus der Auflistung der Sitzungszustandselemente.Deletes an item at a specified index from the session-state item collection.

Gilt für:

Siehe auch