SessionStateUtility.GetHttpSessionStateFromContext(HttpContext) Méthode

Définition

Récupère les données de session dans le contexte pour la demande actuelle.

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

Paramètres

context
HttpContext

HttpContext duquel récupérer les données de session.

Retours

Instance d'implémentation IHttpSessionState remplie avec les données de session provenant de la demande actuelle.

Exemples

L’exemple de code suivant montre le gestionnaire de l’événement ReleaseRequestState dans un module d’état de session personnalisé. Le module récupère les données de session du pour la requête actuelle à l’aide de HttpContext la GetHttpSessionStateFromContext méthode . Cet exemple de code fait partie d’un exemple plus grand fourni pour la SessionStateUtility classe .

//
// 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

Remarques

La GetHttpSessionStateFromContext méthode peut être utilisée par un module d’état de session pour récupérer des données de session à partir de la requête actuelle. Cela se produit pendant l’événement ReleaseRequestState à la fin d’une demande. Les données de session retournées peuvent ensuite être écrites dans le magasin de données de session. Si la session a été abandonnée, les données de session peuvent être supprimées du magasin de données et HttpContext, et l’événement Session_OnEnd peut être exécuté.

Notes pour les héritiers

Vous pouvez utiliser la RemoveHttpSessionStateFromContext(HttpContext) méthode pour supprimer les données de session du magasin interne et la RaiseSessionEnd(IHttpSessionState, Object, EventArgs) méthode pour déclencher l’événement Session_OnEnd .

S’applique à