SessionStateUtility.GetHttpSessionStateFromContext(HttpContext) Methode

Definition

Ruft Sitzungsdaten aus dem Kontext für die aktuelle Anforderung ab.

public:
 static System::Web::SessionState::IHttpSessionState ^ GetHttpSessionStateFromContext(System::Web::HttpContext ^ context);
public static System.Web.SessionState.IHttpSessionState GetHttpSessionStateFromContext(System.Web.HttpContext context);
static member GetHttpSessionStateFromContext : System.Web.HttpContext -> System.Web.SessionState.IHttpSessionState
Public Shared Function GetHttpSessionStateFromContext (context As HttpContext) As IHttpSessionState

Parameter

context
HttpContext

Die HttpContext Daten, aus denen Sitzungsdaten abgerufen werden sollen.

Gibt zurück

Eine IHttpSessionState Implementierungsinstanz, die mit Sitzungsdaten aus der aktuellen Anforderung aufgefüllt wird.

Beispiele

Das folgende Codebeispiel zeigt den Handler für das ReleaseRequestState Ereignis in einem benutzerdefinierten Sitzungszustandsmodul. Das Modul ruft Sitzungsdaten aus der HttpContext aktuellen Anforderung mithilfe der GetHttpSessionStateFromContext Methode ab. Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die SessionStateUtility Klasse bereitgestellt wird.

//
// Event handler for HttpApplication.ReleaseRequestState
//

private void OnReleaseRequestState(object source, EventArgs args)
{
    HttpApplication app = (HttpApplication)source;
    HttpContext context = app.Context;
    string sessionID;

    // Read the session state from the context
    HttpSessionStateContainer stateProvider =
      (HttpSessionStateContainer)(SessionStateUtility.GetHttpSessionStateFromContext(context));

    // If Session.Abandon() was called, remove the session data from the local Hashtable
    // and execute the Session_OnEnd event from the Global.asax file.
    if (stateProvider.IsAbandoned)
    {
        try
        {
            pHashtableLock.AcquireWriterLock(Int32.MaxValue);

            sessionID = pSessionIDManager.GetSessionID(context);
            pSessionItems.Remove(sessionID);
        }
        finally
        {
            pHashtableLock.ReleaseWriterLock();
        }

        SessionStateUtility.RaiseSessionEnd(stateProvider, this, EventArgs.Empty);
    }

    SessionStateUtility.RemoveHttpSessionStateFromContext(context);
}
'
' Event handler for HttpApplication.ReleaseRequestState
'
Private Sub OnReleaseRequestState(ByVal [source] As Object, ByVal args As EventArgs)
    Dim app As HttpApplication = CType([source], HttpApplication)
    Dim context As HttpContext = app.Context
    Dim sessionID As String

    ' Read the session state from the context
    Dim stateProvider As HttpSessionStateContainer = _
       CType(SessionStateUtility.GetHttpSessionStateFromContext(context), HttpSessionStateContainer)

    ' If Session.Abandon() was called, remove the session data from the local Hashtable
    ' and execute the Session_OnEnd event from the Global.asax file.
    If stateProvider.IsAbandoned Then
        Try
            pHashtableLock.AcquireWriterLock(Int32.MaxValue)

            sessionID = pSessionIDManager.GetSessionID(context)
            pSessionItems.Remove(sessionID)
        Finally
            pHashtableLock.ReleaseWriterLock()
        End Try

        SessionStateUtility.RaiseSessionEnd(stateProvider, Me, EventArgs.Empty)
    End If

  SessionStateUtility.RemoveHttpSessionStateFromContext(context)
End Sub

Hinweise

Die GetHttpSessionStateFromContext Methode kann von einem Sitzungsstatusmodul verwendet werden, um Sitzungsdaten aus der aktuellen Anforderung abzurufen. Dies tritt während des ReleaseRequestState Ereignisses am Ende einer Anforderung auf. Die zurückgegebenen Sitzungsdaten können dann in den Sitzungsdatenspeicher geschrieben werden. Wenn die Sitzung abgebrochen wurde, können die Sitzungsdaten aus dem Datenspeicher entfernt HttpContextund das Session_OnEnd Ereignis ausgeführt werden.

Hinweise für Vererber

Sie können die RemoveHttpSessionStateFromContext(HttpContext) Methode verwenden, um Sitzungsdaten aus dem internen Speicher zu entfernen, und die RaiseSessionEnd(IHttpSessionState, Object, EventArgs) Methode zum Auslösen des Session_OnEnd Ereignisses.

Gilt für: